Merge branch 'develop' into feature/security-active-sessions

# Conflicts:
#	packages/client/src/Shell.jsx
#	packages/client/src/components/FilesPanels/index.js
#	packages/client/src/pages/PortalSettings/Layout/Section/Header/index.js
#	packages/client/src/store/DialogsStore.js
#	packages/client/src/store/SettingsSetupStore.js
This commit is contained in:
Elyor Djalilov 2024-07-29 17:53:25 +05:00
commit ed344424c0
585 changed files with 9256 additions and 5515 deletions

View File

@ -29,14 +29,14 @@ using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Reflection;
using System.Security.Cryptography;
using System.Text;
using System.Text.RegularExpressions;
using Frontend.Tests;
using Frontend.Tests.Models;
using System.Text.RegularExpressions;
using Frontend.Tests;
using Frontend.Tests.Models;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
@ -47,7 +47,7 @@ using WeCantSpell.Hunspell;
namespace Frontend.Tests;
public class LocalesTest
{
{
public static string BasePath
{
get
@ -56,18 +56,18 @@ public class LocalesTest
}
}
public static bool Save
{
get
{
bool save;
if (bool.TryParse(Environment.GetEnvironmentVariable("SAVE"), out save))
{
return save;
}
return false;
}
public static bool Save
{
get
{
bool save;
if (bool.TryParse(Environment.GetEnvironmentVariable("SAVE"), out save))
{
return save;
}
return false;
}
}
public List<string> Workspaces { get; set; }
@ -77,13 +77,14 @@ public class LocalesTest
public List<KeyValuePair<string, string>> NotTranslatedToasts { get; set; }
public List<KeyValuePair<string, string>> NotTranslatedProps { get; set; }
public List<LanguageItem> CommonTranslations { get; set; }
public List<ParseJsonError> ParseJsonErrors { get; set; }
public static string ConvertPathToOS { get; private set; }
public List<string> ForbiddenElements { get { return new List<string>() { "ONLYOFFICE", "DOCSPACE" }; } }
//public List<JsonEncodingError> WrongEncodingJsonErrors { get; set; }
public List<ParseJsonError> ParseJsonErrors { get; set; }
public static string ConvertPathToOS { get; private set; }
public List<string> ForbiddenElements { get { return new List<string>() { "ONLYOFFICE", "DOCSPACE" }; } }
public List<string> SkipForbiddenKeys = new List<string> { "OrganizationName", "ProductName", "ProductEditorsName" };
//public List<JsonEncodingError> WrongEncodingJsonErrors { get; set; }
private static readonly string _md5ExcludesPath = Path.GetFullPath(Utils.ConvertPathToOS("../../../md5-excludes.json"));
private static readonly string _spellCheckCommonExcludesPath = Path.GetFullPath(Utils.ConvertPathToOS("../../../spellcheck-excludes-common.json"));
private static readonly string _spellCheckExcludesPath = Path.GetFullPath(Utils.ConvertPathToOS("../../../spellcheck-excludes.json"));
@ -104,7 +105,7 @@ public class LocalesTest
[OneTimeSetUp]
public void Setup()
{
{
ParseJsonErrors = new List<ParseJsonError>();
//WrongEncodingJsonErrors = new List<JsonEncodingError>();
@ -357,14 +358,14 @@ public class LocalesTest
TestContext.Progress.WriteLine($"Found CommonTranslations = {CommonTranslations.Count()}. First path is '{CommonTranslations.FirstOrDefault()?.Path}'");
TestContext.Progress.WriteLine($"Found Md5Excludes = {Md5Excludes.Count} Path to file '{_md5ExcludesPath}'");
TestContext.Progress.WriteLine($"Found SpellCheckCommonExcludes = {SpellCheckCommonExcludes.Count} Path to file '{_spellCheckCommonExcludesPath}'");
TestContext.Progress.WriteLine($"Save spell check excludes = {Save} Path to file '{_spellCheckExcludesPath}'");
}
TestContext.Progress.WriteLine($"Found Md5Excludes = {Md5Excludes.Count} Path to file '{_md5ExcludesPath}'");
TestContext.Progress.WriteLine($"Found SpellCheckCommonExcludes = {SpellCheckCommonExcludes.Count} Path to file '{_spellCheckCommonExcludesPath}'");
TestContext.Progress.WriteLine($"Save spell check excludes = {Save} Path to file '{_spellCheckExcludesPath}'");
}
[Test, Order(1)]
[Category("Locales")]
public void LanguageTranslatedPercentTest()
@ -499,7 +500,7 @@ public class LocalesTest
.ToList();
Assert.AreEqual(0, duplicates.Count, string.Join(", ", duplicates.Select(d => JObject.FromObject(d).ToString())));
}
}
[Test, Order(6)]
[Category("Locales")]
@ -514,10 +515,10 @@ public class LocalesTest
.Where(f => !f.Path.Contains("Banner.js")) // skip Banner.js (translations from firebase)
.SelectMany(j => j.TranslationKeys)
.Select(k => k.Substring(k.IndexOf(":") + 1))
.Distinct();
//var foo = JavaScriptFiles
// .Where(f => !f.Path.Contains("Banner.js"))
.Distinct();
//var foo = JavaScriptFiles
// .Where(f => !f.Path.Contains("Banner.js"))
// .Where(t => t.TranslationKeys.Any(k => k == "foo")).FirstOrDefault();
var notFoundJsKeys = allJsTranslationKeys.Except(allEnKeys);
@ -525,8 +526,8 @@ public class LocalesTest
Assert.AreEqual(0, notFoundJsKeys.Count(),
"Some i18n-keys are not exist in translations in 'en' language: Keys:\r\n{0}",
string.Join("\r\n", notFoundJsKeys));
}
}
[Test, Order(7)]
[Category("Locales")]
public void DublicatesFilesByMD5HashTest()
@ -541,8 +542,8 @@ public class LocalesTest
.ToList();
Assert.AreEqual(0, duplicatesByMD5.Count, "Dublicates by MD5 hash:\r\n" + string.Join("\r\n", duplicatesByMD5.Select(d => $"\r\nMD5='{d.Key}':\r\n{string.Join("\r\n", d.Paths.Select(p => p))}'")));
}
}
[Test, Order(8)]
[Category("Locales")]
public void UselessTranslationKeysTest()
@ -627,8 +628,8 @@ public class LocalesTest
{
Language = g.Key,
TranslationsWithVariables = g.ToList()
.SelectMany(t => t.Translations.Select(k => new TranslationItem($"{t.FileName}:{k.Key}", k.Value)))
//.Where(k => k.Value.IndexOf("{{") != -1)
.SelectMany(t => t.Translations.Select(k => new TranslationItem($"{t.FileName}:{k.Key}", k.Value)))
//.Where(k => k.Value.IndexOf("{{") != -1)
.Select(t => new
{
t.Key,
@ -654,12 +655,12 @@ public class LocalesTest
var i = 0;
var errorsCount = 0;
foreach (var enKeyWithVariables in enWithVariables)
{
foreach (var lng in otherLanguagesWithVariables)
{
var lngKey = lng.TranslationsWithVariables
.Where(t => t.Key == enKeyWithVariables.Key)
foreach (var enKeyWithVariables in enWithVariables)
{
foreach (var lng in otherLanguagesWithVariables)
{
var lngKey = lng.TranslationsWithVariables
.Where(t => t.Key == enKeyWithVariables.Key)
.FirstOrDefault();
if (lngKey == null)
@ -671,8 +672,8 @@ public class LocalesTest
}
if (enKeyWithVariables.Variables.Count != lngKey.Variables.Count)
{
// wrong
{
// wrong
message += $"{++i}. lng='{lng.Language}' key='{lngKey.Key}' has less variables then 'en' language have " +
$"(en={enKeyWithVariables.Variables.Count}|{lng.Language}={lngKey.Variables.Count})\r\n" +
$"'en': '{enKeyWithVariables.Value}'\r\n'{lng.Language}': '{lngKey.Value}'\r\n\r\n";
@ -680,10 +681,10 @@ public class LocalesTest
}
if (!lngKey.Variables.All(v => enKeyWithVariables.Variables.Contains(v)))
{
// wrong
message += $"{++i}. lng='{lng.Language}' key='{lngKey.Key}' has not equals variables of 'en' language have \r\n" +
$"'{enKeyWithVariables.Value}' Variables=[{string.Join(",", enKeyWithVariables.Variables)}]\r\n" +
{
// wrong
message += $"{++i}. lng='{lng.Language}' key='{lngKey.Key}' has not equals variables of 'en' language have \r\n" +
$"'{enKeyWithVariables.Value}' Variables=[{string.Join(",", enKeyWithVariables.Variables)}]\r\n" +
$"'{lngKey.Value}' Variables=[{string.Join(",", lngKey.Variables)}]\r\n\r\n";
errorsCount++;
}
@ -708,8 +709,8 @@ public class LocalesTest
{
Language = g.Key,
TranslationsWithTags = g.ToList()
.SelectMany(t => t.Translations)
//.Where(k => k.Value.IndexOf("<") != -1)
.SelectMany(t => t.Translations)
//.Where(k => k.Value.IndexOf("<") != -1)
.Select(t => new
{
t.Key,
@ -735,22 +736,22 @@ public class LocalesTest
var i = 0;
var errorsCount = 0;
foreach (var enKeyWithTags in enWithTags)
{
foreach (var lng in otherLanguagesWithTags)
{
var lngKey = lng.TranslationsWithTags
.Where(t => t.Key == enKeyWithTags.Key)
.FirstOrDefault();
if (lngKey == null)
{
foreach (var enKeyWithTags in enWithTags)
{
foreach (var lng in otherLanguagesWithTags)
{
var lngKey = lng.TranslationsWithTags
.Where(t => t.Key == enKeyWithTags.Key)
.FirstOrDefault();
if (lngKey == null)
{
// wrong
//message += $"{++i}. lng='{lng.Language}' key='{enKeyWithTags.Key}' not found\r\n\r\n";
//errorsCount++;
continue;
}
continue;
}
if (enKeyWithTags.Tags.Count != lngKey.Tags.Count)
{
// wrong
@ -758,8 +759,8 @@ public class LocalesTest
$"(en={enKeyWithTags.Tags.Count}|{lng.Language}={lngKey.Tags.Count})\r\n" +
$"'en': '{enKeyWithTags.Value}'\r\n'{lng.Language}': '{lngKey.Value}'\r\n\r\n";
errorsCount++;
}
}
if (!lngKey.Tags.All(v => enKeyWithTags.Tags.Contains(v)))
{
// wrong
@ -767,9 +768,9 @@ public class LocalesTest
$"'{enKeyWithTags.Value}' Tags=[{string.Join(",", enKeyWithTags.Tags)}]\r\n" +
$"'{lngKey.Value}' Tags=[{string.Join(",", lngKey.Tags)}]\r\n\r\n";
errorsCount++;
}
}
}
}
}
/*foreach (var lng in otherLanguagesWithTags)
@ -809,19 +810,18 @@ public class LocalesTest
}*/
Assert.AreEqual(0, errorsCount, message);
}
}
[Test, Order(13)]
[Category("Locales")]
public void ForbiddenValueElementsTest()
{
var message = $"Next keys have forbidden values `{string.Join(",", ForbiddenElements)}`:\r\n\r\n";
var message = $"Next keys have forbidden values `{string.Join(",", ForbiddenElements)}`:\r\n\r\n";
var exists = false;
var i = 0;
var i = 0;
foreach (var module in ModuleFolders)
{
if (module.AvailableLanguages == null)
@ -844,38 +844,41 @@ public class LocalesTest
message += string.Join("\r\n", keys) + "\r\n\r\n";
}
}
}
foreach (var lng in CommonTranslations)
{
var translationItems = lng.Translations.Where(f => ForbiddenElements.Any(elem => f.Value.ToUpper().Contains(elem))).ToList();
if (!translationItems.Any())
continue;
exists = true;
message += $"{++i}. Language '{lng.Language}' (Count: {translationItems.Count}). Path '{lng.Path}' " +
$"Keys:\r\n\r\n";
var keys = translationItems.Select(t => t.Key).ToList();
var translationItems = lng.Translations
.Where(elem => !SkipForbiddenKeys.Exists(k => k == elem.Key))
.Where(f => ForbiddenElements.Any(elem => f.Value.ToUpper().Contains(elem)))
.ToList();
if (!translationItems.Any())
continue;
exists = true;
message += $"{++i}. Language '{lng.Language}' (Count: {translationItems.Count}). Path '{lng.Path}' " +
$"Keys:\r\n\r\n";
var keys = translationItems.Select(t => t.Key).ToList();
message += string.Join("\r\n", keys) + "\r\n\r\n";
}
Assert.AreEqual(false, exists, message);
}
}
[Test, Order(14)]
[Category("Locales")]
[Category("Locales")]
public void ForbiddenKeysElementsTest()
{
var message = $"Next keys have forbidden elements in names `{string.Join(",", ForbiddenElements)}`:\r\n\r\n";
var message = $"Next keys have forbidden elements in names `{string.Join(",", ForbiddenElements)}`:\r\n\r\n";
var exists = false;
var i = 0;
var i = 0;
foreach (var module in ModuleFolders)
{
if (module.AvailableLanguages == null)
@ -883,9 +886,8 @@ public class LocalesTest
foreach (var lng in module.AvailableLanguages)
{
var translationItems = lng.Translations.Where(f => ForbiddenElements.Any(elem => f.Key.ToUpper().Contains(elem))).ToList();
var translationItems = lng.Translations.Where(f => ForbiddenElements.Any(elem => f.Key.ToUpper().Contains(elem))).ToList();
if (!translationItems.Any())
continue;
@ -899,28 +901,31 @@ public class LocalesTest
message += string.Join("\r\n", keys) + "\r\n\r\n";
}
}
}
foreach (var lng in CommonTranslations)
{
var translationItems = lng.Translations.Where(f => ForbiddenElements.Any(elem => f.Key.ToUpper().Contains(elem))).ToList();
if (!translationItems.Any())
continue;
exists = true;
message += $"{++i}. Language '{lng.Language}' (Count: {translationItems.Count}). Path '{lng.Path}' " +
$"Keys:\r\n\r\n";
var keys = translationItems.Select(t => t.Key).ToList();
{
var translationItems = lng.Translations
.Where(elem => !SkipForbiddenKeys.Exists(k => k == elem.Key))
.Where(f => ForbiddenElements.Any(elem => f.Key.ToUpper().Contains(elem)))
.ToList();
if (!translationItems.Any())
continue;
exists = true;
message += $"{++i}. Language '{lng.Language}' (Count: {translationItems.Count}). Path '{lng.Path}' " +
$"Keys:\r\n\r\n";
var keys = translationItems.Select(t => t.Key).ToList();
message += string.Join("\r\n", keys) + "\r\n\r\n";
}
Assert.AreEqual(false, exists, message);
}
}
[Test, Order(15)]
[Category("Locales")]
public void EmptyValueKeysTest()
@ -1023,8 +1028,8 @@ public class LocalesTest
}
Assert.AreEqual(false, exists, message);
}
}
[Test, Order(16)]
[Category("Locales")]
public void NotTranslatedKeysTest()
@ -1070,8 +1075,8 @@ public class LocalesTest
}
Assert.AreEqual(false, exists, message);
}
}
[Test, Order(17)]
[Category("Locales")]
public void NotTranslatedCommonKeysTest()
@ -1113,7 +1118,7 @@ public class LocalesTest
[Test, Order(18)]
[Category("Locales")]
public void NotAllLanguageTranslatedTest()
{
{
var groupedByLng = TranslationFiles
.GroupBy(t => t.Language)
.Select(grp => new { Lng = grp.Key, Count = grp.Count(), Files = grp.ToList() })
@ -1165,8 +1170,8 @@ public class LocalesTest
}
Assert.AreEqual(0, incompleteList.Count, message);
}
}
[Test, Order(19)]
[Category("SpellCheck")]
public void SpellCheckTest()
@ -1207,43 +1212,43 @@ public class LocalesTest
if (result.HasProblems)
{
var incorrectWords = result.SpellIssues
.Where(t => !SpellCheckCommonExcludes
.Exists(e => e.Equals(t.Word, StringComparison.InvariantCultureIgnoreCase)))
.Select(issue => $"'{issue.Word}' " +
var incorrectWords = result.SpellIssues
.Where(t => !SpellCheckCommonExcludes
.Exists(e => e.Equals(t.Word, StringComparison.InvariantCultureIgnoreCase)))
.Select(issue => $"'{issue.Word}' " +
$"Suggestion: '{issue.Suggestions.FirstOrDefault()}'")
.ToList();
if (!incorrectWords.Any())
continue;
message += $"{++i}. lng='{group.Language}' file='{g.FilePath}'\r\nkey='{item.Key}' " +
$"value='{item.Value}'\r\nIncorrect words:\r\n" +
message += $"{++i}. lng='{group.Language}' file='{g.FilePath}'\r\nkey='{item.Key}' " +
$"value='{item.Value}'\r\nIncorrect words:\r\n" +
$"{string.Join("\r\n", incorrectWords)}\r\n\r\n";
errorsCount++;
if (Save)
{
if (Save)
{
foreach (var word in result.SpellIssues
.Where(issue => issue.Suggestions.Any())
.Select(issue => issue.Word))
{
if (!spellCheckExclude.Excludes.Contains(word))
{
spellCheckExclude.Excludes.Add(word);
}
}
.Select(issue => issue.Word))
{
if (!spellCheckExclude.Excludes.Contains(word))
{
spellCheckExclude.Excludes.Add(word);
}
}
}
}
}
}
}
if (Save)
{
spellCheckExclude.Excludes.Sort();
list.Add(spellCheckExclude);
if (Save)
{
spellCheckExclude.Excludes.Sort();
list.Add(spellCheckExclude);
}
}
catch (NotSupportedException)
@ -1253,135 +1258,135 @@ public class LocalesTest
}
}
if (Save)
{
string json = JsonConvert.SerializeObject(list, Formatting.Indented);
File.WriteAllText(_spellCheckExcludesPath, json, Encoding.UTF8);
TestContext.Progress.WriteLine($"File spellcheck-excludes.json has been saved to '{_spellCheckExcludesPath}'");
if (Save)
{
string json = JsonConvert.SerializeObject(list, Formatting.Indented);
File.WriteAllText(_spellCheckExcludesPath, json, Encoding.UTF8);
TestContext.Progress.WriteLine($"File spellcheck-excludes.json has been saved to '{_spellCheckExcludesPath}'");
}
Assert.AreEqual(0, errorsCount, message);
}
/* [Test, Order(17)]
[Category("Locales")]
public void UselessModuleTranslationKeysTest()
{
var notFoundi18nKeys = new List<KeyValuePair<string, List<string>>>();
var message = $"Some i18n-keys are not found in Module or Common translations: \r\nKeys: \r\n\r\n";
var index = 0;
for (int i = 0; i < ModuleFolders.Count; i++)
{
var module = ModuleFolders[i];
if (module.AppliedJsTranslationKeys == null && module.AvailableLanguages != null)
{
message += $"{++index}. 'ANY LANGUAGES' '{module.Path}' NOT USED\r\n";
var list = module.AvailableLanguages
.SelectMany(l => l.Translations.Select(t => t.Key).ToList())
.ToList();
notFoundi18nKeys.Add(new KeyValuePair<string, List<string>>("ANY LANGUAGES", list));
continue;
}
var exepts = new List<string> { "Error", "Done", "Warning", "Alert", "Info" };
var notCommonKeys = module.AppliedJsTranslationKeys
.Except(exepts)
.Where(k => !k.StartsWith("Common:"))
.OrderBy(t => t)
.ToList();
var onlyCommonKeys = module.AppliedJsTranslationKeys
.Except(notCommonKeys)
.Select(k => k.Replace("Common:", ""))
.OrderBy(t => t)
.ToList();
notCommonKeys = notCommonKeys.Select(k => k.Substring(k.IndexOf(":") + 1)).ToList();
if (onlyCommonKeys.Any())
{
foreach (var lng in CommonTranslations)
{
var list = onlyCommonKeys
.Except(lng.Translations.Select(t => t.Key))
.ToList();
if (!list.Any())
continue;
message += $"{++index}. '{lng.Language}' '{module.Path}' \r\n {string.Join("\r\n", list)} \r\n";
notFoundi18nKeys.Add(new KeyValuePair<string, List<string>>(lng.Language, list));
}
}
if (module.AvailableLanguages == null)
{
if (notCommonKeys.Any())
{
var commonEnKeys = CommonTranslations.First(c => c.Language == "en").Translations.Select(t => t.Key).ToList();
var list = notCommonKeys
.Except(commonEnKeys.Select(k => k))
.ToList();
if (list.Any())
{
message += $"{++index}. 'ANY LANGUAGES' '{module.Path}' \r\n {string.Join("\r\n", list)} \r\n";
notFoundi18nKeys.Add(new KeyValuePair<string, List<string>>("ANY LANGUAGES", list));
}
}
continue;
}
foreach (var lng in module.AvailableLanguages)
{
var list = lng.Translations
.Select(t => t.Key)
.Except(notCommonKeys)
.ToList();
if (!list.Any())
continue;
message += $"{++index}. '{lng.Language}' '{module.Path}' \r\n {string.Join("\r\n", list)} \r\n";
notFoundi18nKeys.Add(new KeyValuePair<string, List<string>>(lng.Language, list));
}
}
Assert.AreEqual(0, notFoundi18nKeys.Count, message);
}*/
//[Test]
//[Category("Locales")]
//public void TranslationsEncodingTest()
//{
// /*//Convert to UTF-8
// foreach (var issue in WrongEncodingJsonErrors)
// {
// if (issue.DetectionDetail.Encoding == null)
// continue;
// ConvertFileEncoding(issue.Path, issue.Path, issue.DetectionDetail.Encoding, Encoding.UTF8);
// }*/
// var message = $"Next files have encoding issues:\r\n\r\n";
// Assert.AreEqual(0, WrongEncodingJsonErrors.Count,
// message + string.Join("\r\n", WrongEncodingJsonErrors
// .Select(e => $"File path = '{e.Path}' potentially wrong file encoding: {e.DetectionDetail.EncodingName}")));
//}
}
/* [Test, Order(17)]
[Category("Locales")]
public void UselessModuleTranslationKeysTest()
{
var notFoundi18nKeys = new List<KeyValuePair<string, List<string>>>();
var message = $"Some i18n-keys are not found in Module or Common translations: \r\nKeys: \r\n\r\n";
var index = 0;
for (int i = 0; i < ModuleFolders.Count; i++)
{
var module = ModuleFolders[i];
if (module.AppliedJsTranslationKeys == null && module.AvailableLanguages != null)
{
message += $"{++index}. 'ANY LANGUAGES' '{module.Path}' NOT USED\r\n";
var list = module.AvailableLanguages
.SelectMany(l => l.Translations.Select(t => t.Key).ToList())
.ToList();
notFoundi18nKeys.Add(new KeyValuePair<string, List<string>>("ANY LANGUAGES", list));
continue;
}
var exepts = new List<string> { "Error", "Done", "Warning", "Alert", "Info" };
var notCommonKeys = module.AppliedJsTranslationKeys
.Except(exepts)
.Where(k => !k.StartsWith("Common:"))
.OrderBy(t => t)
.ToList();
var onlyCommonKeys = module.AppliedJsTranslationKeys
.Except(notCommonKeys)
.Select(k => k.Replace("Common:", ""))
.OrderBy(t => t)
.ToList();
notCommonKeys = notCommonKeys.Select(k => k.Substring(k.IndexOf(":") + 1)).ToList();
if (onlyCommonKeys.Any())
{
foreach (var lng in CommonTranslations)
{
var list = onlyCommonKeys
.Except(lng.Translations.Select(t => t.Key))
.ToList();
if (!list.Any())
continue;
message += $"{++index}. '{lng.Language}' '{module.Path}' \r\n {string.Join("\r\n", list)} \r\n";
notFoundi18nKeys.Add(new KeyValuePair<string, List<string>>(lng.Language, list));
}
}
if (module.AvailableLanguages == null)
{
if (notCommonKeys.Any())
{
var commonEnKeys = CommonTranslations.First(c => c.Language == "en").Translations.Select(t => t.Key).ToList();
var list = notCommonKeys
.Except(commonEnKeys.Select(k => k))
.ToList();
if (list.Any())
{
message += $"{++index}. 'ANY LANGUAGES' '{module.Path}' \r\n {string.Join("\r\n", list)} \r\n";
notFoundi18nKeys.Add(new KeyValuePair<string, List<string>>("ANY LANGUAGES", list));
}
}
continue;
}
foreach (var lng in module.AvailableLanguages)
{
var list = lng.Translations
.Select(t => t.Key)
.Except(notCommonKeys)
.ToList();
if (!list.Any())
continue;
message += $"{++index}. '{lng.Language}' '{module.Path}' \r\n {string.Join("\r\n", list)} \r\n";
notFoundi18nKeys.Add(new KeyValuePair<string, List<string>>(lng.Language, list));
}
}
Assert.AreEqual(0, notFoundi18nKeys.Count, message);
}*/
//[Test]
//[Category("Locales")]
//public void TranslationsEncodingTest()
//{
// /*//Convert to UTF-8
// foreach (var issue in WrongEncodingJsonErrors)
// {
// if (issue.DetectionDetail.Encoding == null)
// continue;
// ConvertFileEncoding(issue.Path, issue.Path, issue.DetectionDetail.Encoding, Encoding.UTF8);
// }*/
// var message = $"Next files have encoding issues:\r\n\r\n";
// Assert.AreEqual(0, WrongEncodingJsonErrors.Count,
// message + string.Join("\r\n", WrongEncodingJsonErrors
// .Select(e => $"File path = '{e.Path}' potentially wrong file encoding: {e.DetectionDetail.EncodingName}")));
//}
/*[Test]
public void TempTest()
{
@ -1468,8 +1473,8 @@ public class LocalesTest
UpdateKeys(lng.Path, newKeys);
}
}*/
}*/
public static void SaveNotFoundKeys(string pathToJson, List<string> newKeys)
{
if (!File.Exists(pathToJson))
@ -1488,8 +1493,8 @@ public class LocalesTest
var sortedJsonString = JsonConvert.SerializeObject(result, Formatting.Indented);
File.WriteAllText(pathToJson, sortedJsonString, Encoding.UTF8);
}
}
public static void SaveNotFoundLanguage(string existJsonPath, string notExistJsonPath)
{
if (!File.Exists(existJsonPath) || File.Exists(notExistJsonPath))
@ -1513,8 +1518,8 @@ public class LocalesTest
Directory.CreateDirectory(fullPathOnly);
File.WriteAllText(notExistJsonPath, sortedJsonString, Encoding.UTF8);
}
}
public static void UpdateKeys(string pathToJson, List<TranslationItem> newKeys)
{
if (!File.Exists(pathToJson) || !newKeys.Any())
@ -1608,8 +1613,8 @@ public class LocalesTest
var sortedJsonString = JsonConvert.SerializeObject(result, Formatting.Indented);
File.WriteAllText(pathToJson, sortedJsonString, Encoding.UTF8);
}
}
public static Tuple<string, string> getPaths(string language)
{
const string dictionariesPath = @"../../../dictionaries";
@ -1630,84 +1635,84 @@ public class LocalesTest
var affPath = Utils.ConvertPathToOS(Path.Combine(path, language, $"{language}.aff"));
return new Tuple<string, string>(dicPath, affPath);
}
}
public static void ConvertFileEncoding(string sourcePath, string destPath, Encoding sourceEncoding, Encoding destEncoding)
{
// If the destination's parent doesn't exist, create it.
var parent = Path.GetDirectoryName(Path.GetFullPath(destPath));
if (!Directory.Exists(parent))
{
Directory.CreateDirectory(parent);
}
// If the source and destination encodings are the same, just copy the file.
if (sourceEncoding == destEncoding)
{
File.Copy(sourcePath, destPath, true);
return;
}
// Convert the file.
string tempName = null;
try
{
tempName = Path.GetTempFileName();
using (StreamReader sr = new StreamReader(sourcePath, sourceEncoding, false))
{
using (StreamWriter sw = new StreamWriter(tempName, false, destEncoding))
{
int charsRead;
char[] buffer = new char[128 * 1024];
while ((charsRead = sr.ReadBlock(buffer, 0, buffer.Length)) > 0)
{
sw.Write(buffer, 0, charsRead);
}
}
}
File.Delete(destPath);
File.Move(tempName, destPath);
}
finally
{
File.Delete(tempName);
}
public static void ConvertFileEncoding(string sourcePath, string destPath, Encoding sourceEncoding, Encoding destEncoding)
{
// If the destination's parent doesn't exist, create it.
var parent = Path.GetDirectoryName(Path.GetFullPath(destPath));
if (!Directory.Exists(parent))
{
Directory.CreateDirectory(parent);
}
// If the source and destination encodings are the same, just copy the file.
if (sourceEncoding == destEncoding)
{
File.Copy(sourcePath, destPath, true);
return;
}
// Convert the file.
string tempName = null;
try
{
tempName = Path.GetTempFileName();
using (StreamReader sr = new StreamReader(sourcePath, sourceEncoding, false))
{
using (StreamWriter sw = new StreamWriter(tempName, false, destEncoding))
{
int charsRead;
char[] buffer = new char[128 * 1024];
while ((charsRead = sr.ReadBlock(buffer, 0, buffer.Length)) > 0)
{
sw.Write(buffer, 0, charsRead);
}
}
}
File.Delete(destPath);
File.Move(tempName, destPath);
}
finally
{
File.Delete(tempName);
}
}
/* [Test]
public void MoveKeysToCommon()
{
var findKeys = new List<string> {
public void MoveKeysToCommon()
{
var findKeys = new List<string> {
"SharingPanel:CustomFilter",
"SharingPanel:ReadOnly",
"SharingPanel:DenyAccess",
"SharingPanel:Comment",
"SharingPanel:ShareVia"
};
//var findKeys = new List<string> {
// "Translations:DownloadApps",
//};
foreach (var findKey in findKeys)
{
var splitted = findKey.Split(":");
var file = splitted[0];
var key = splitted[1];
var tFiles = TranslationFiles.Where(t => t.FileName.Equals($"{file}.json", StringComparison.InvariantCultureIgnoreCase));
foreach (var tFile in tFiles)
{
var tKeys = tFile.Translations.Where(t => t.Key == key);
foreach (var tKey in tKeys)
{
var commonPath = Utils.ConvertPathToOS(Path.Combine(BasePath, "public/locales", tFile.Language, "Common.json"));
AddKeyValue(commonPath, tKey.Key, tKey.Value);
RemoveKey(tFile.FilePath, key);
}
}
}
"SharingPanel:ShareVia"
};
//var findKeys = new List<string> {
// "Translations:DownloadApps",
//};
foreach (var findKey in findKeys)
{
var splitted = findKey.Split(":");
var file = splitted[0];
var key = splitted[1];
var tFiles = TranslationFiles.Where(t => t.FileName.Equals($"{file}.json", StringComparison.InvariantCultureIgnoreCase));
foreach (var tFile in tFiles)
{
var tKeys = tFile.Translations.Where(t => t.Key == key);
foreach (var tKey in tKeys)
{
var commonPath = Utils.ConvertPathToOS(Path.Combine(BasePath, "public/locales", tFile.Language, "Common.json"));
AddKeyValue(commonPath, tKey.Key, tKey.Value);
RemoveKey(tFile.FilePath, key);
}
}
}
} */
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<babeledit_project be_version="4.1.0" version="1.3">
<babeledit_project be_version="5.2.0" version="1.3">
<!--
BabelEdit project file
@ -19,6 +19,797 @@
<package_node>
<name>main</name>
<children>
<file_node>
<name>CompletedForm</name>
<children>
<concept_node>
<name>BackToRoom</name>
<description/>
<comment/>
<translations>
<translation>
<language>ar-SA</language>
<approved>false</approved>
</translation>
<translation>
<language>az-Latn-AZ</language>
<approved>false</approved>
</translation>
<translation>
<language>bg-BG</language>
<approved>false</approved>
</translation>
<translation>
<language>cs-CZ</language>
<approved>false</approved>
</translation>
<translation>
<language>de-DE</language>
<approved>false</approved>
</translation>
<translation>
<language>el-GR</language>
<approved>false</approved>
</translation>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-ES</language>
<approved>false</approved>
</translation>
<translation>
<language>fi-FI</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-FR</language>
<approved>false</approved>
</translation>
<translation>
<language>hy-AM</language>
<approved>false</approved>
</translation>
<translation>
<language>it-IT</language>
<approved>false</approved>
</translation>
<translation>
<language>ja-JP</language>
<approved>false</approved>
</translation>
<translation>
<language>ko-KR</language>
<approved>false</approved>
</translation>
<translation>
<language>lo-LA</language>
<approved>false</approved>
</translation>
<translation>
<language>lv-LV</language>
<approved>false</approved>
</translation>
<translation>
<language>nl-NL</language>
<approved>false</approved>
</translation>
<translation>
<language>pl-PL</language>
<approved>false</approved>
</translation>
<translation>
<language>pt-BR</language>
<approved>false</approved>
</translation>
<translation>
<language>pt-PT</language>
<approved>false</approved>
</translation>
<translation>
<language>ro-RO</language>
<approved>false</approved>
</translation>
<translation>
<language>ru-RU</language>
<approved>false</approved>
</translation>
<translation>
<language>si-SI</language>
<approved>false</approved>
</translation>
<translation>
<language>sk-SK</language>
<approved>false</approved>
</translation>
<translation>
<language>sl-SI</language>
<approved>false</approved>
</translation>
<translation>
<language>sr-Cyrl-RS</language>
<approved>false</approved>
</translation>
<translation>
<language>sr-Latn-RS</language>
<approved>false</approved>
</translation>
<translation>
<language>tr-TR</language>
<approved>false</approved>
</translation>
<translation>
<language>uk-UA</language>
<approved>false</approved>
</translation>
<translation>
<language>vi-VN</language>
<approved>false</approved>
</translation>
<translation>
<language>zh-CN</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>Description</name>
<description/>
<comment/>
<translations>
<translation>
<language>ar-SA</language>
<approved>false</approved>
</translation>
<translation>
<language>az-Latn-AZ</language>
<approved>false</approved>
</translation>
<translation>
<language>bg-BG</language>
<approved>false</approved>
</translation>
<translation>
<language>cs-CZ</language>
<approved>false</approved>
</translation>
<translation>
<language>de-DE</language>
<approved>false</approved>
</translation>
<translation>
<language>el-GR</language>
<approved>false</approved>
</translation>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-ES</language>
<approved>false</approved>
</translation>
<translation>
<language>fi-FI</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-FR</language>
<approved>false</approved>
</translation>
<translation>
<language>hy-AM</language>
<approved>false</approved>
</translation>
<translation>
<language>it-IT</language>
<approved>false</approved>
</translation>
<translation>
<language>ja-JP</language>
<approved>false</approved>
</translation>
<translation>
<language>ko-KR</language>
<approved>false</approved>
</translation>
<translation>
<language>lo-LA</language>
<approved>false</approved>
</translation>
<translation>
<language>lv-LV</language>
<approved>false</approved>
</translation>
<translation>
<language>nl-NL</language>
<approved>false</approved>
</translation>
<translation>
<language>pl-PL</language>
<approved>false</approved>
</translation>
<translation>
<language>pt-BR</language>
<approved>false</approved>
</translation>
<translation>
<language>pt-PT</language>
<approved>false</approved>
</translation>
<translation>
<language>ro-RO</language>
<approved>false</approved>
</translation>
<translation>
<language>ru-RU</language>
<approved>false</approved>
</translation>
<translation>
<language>si-SI</language>
<approved>false</approved>
</translation>
<translation>
<language>sk-SK</language>
<approved>false</approved>
</translation>
<translation>
<language>sl-SI</language>
<approved>false</approved>
</translation>
<translation>
<language>sr-Cyrl-RS</language>
<approved>false</approved>
</translation>
<translation>
<language>sr-Latn-RS</language>
<approved>false</approved>
</translation>
<translation>
<language>tr-TR</language>
<approved>false</approved>
</translation>
<translation>
<language>uk-UA</language>
<approved>false</approved>
</translation>
<translation>
<language>vi-VN</language>
<approved>false</approved>
</translation>
<translation>
<language>zh-CN</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>FillItOutAgain</name>
<description/>
<comment/>
<translations>
<translation>
<language>ar-SA</language>
<approved>false</approved>
</translation>
<translation>
<language>az-Latn-AZ</language>
<approved>false</approved>
</translation>
<translation>
<language>bg-BG</language>
<approved>false</approved>
</translation>
<translation>
<language>cs-CZ</language>
<approved>false</approved>
</translation>
<translation>
<language>de-DE</language>
<approved>false</approved>
</translation>
<translation>
<language>el-GR</language>
<approved>false</approved>
</translation>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-ES</language>
<approved>false</approved>
</translation>
<translation>
<language>fi-FI</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-FR</language>
<approved>false</approved>
</translation>
<translation>
<language>hy-AM</language>
<approved>false</approved>
</translation>
<translation>
<language>it-IT</language>
<approved>false</approved>
</translation>
<translation>
<language>ja-JP</language>
<approved>false</approved>
</translation>
<translation>
<language>ko-KR</language>
<approved>false</approved>
</translation>
<translation>
<language>lo-LA</language>
<approved>false</approved>
</translation>
<translation>
<language>lv-LV</language>
<approved>false</approved>
</translation>
<translation>
<language>nl-NL</language>
<approved>false</approved>
</translation>
<translation>
<language>pl-PL</language>
<approved>false</approved>
</translation>
<translation>
<language>pt-BR</language>
<approved>false</approved>
</translation>
<translation>
<language>pt-PT</language>
<approved>false</approved>
</translation>
<translation>
<language>ro-RO</language>
<approved>false</approved>
</translation>
<translation>
<language>ru-RU</language>
<approved>false</approved>
</translation>
<translation>
<language>si-SI</language>
<approved>false</approved>
</translation>
<translation>
<language>sk-SK</language>
<approved>false</approved>
</translation>
<translation>
<language>sl-SI</language>
<approved>false</approved>
</translation>
<translation>
<language>sr-Cyrl-RS</language>
<approved>false</approved>
</translation>
<translation>
<language>sr-Latn-RS</language>
<approved>false</approved>
</translation>
<translation>
<language>tr-TR</language>
<approved>false</approved>
</translation>
<translation>
<language>uk-UA</language>
<approved>false</approved>
</translation>
<translation>
<language>vi-VN</language>
<approved>false</approved>
</translation>
<translation>
<language>zh-CN</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>FormNumber</name>
<description/>
<comment/>
<translations>
<translation>
<language>ar-SA</language>
<approved>false</approved>
</translation>
<translation>
<language>az-Latn-AZ</language>
<approved>false</approved>
</translation>
<translation>
<language>bg-BG</language>
<approved>false</approved>
</translation>
<translation>
<language>cs-CZ</language>
<approved>false</approved>
</translation>
<translation>
<language>de-DE</language>
<approved>false</approved>
</translation>
<translation>
<language>el-GR</language>
<approved>false</approved>
</translation>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-ES</language>
<approved>false</approved>
</translation>
<translation>
<language>fi-FI</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-FR</language>
<approved>false</approved>
</translation>
<translation>
<language>hy-AM</language>
<approved>false</approved>
</translation>
<translation>
<language>it-IT</language>
<approved>false</approved>
</translation>
<translation>
<language>ja-JP</language>
<approved>false</approved>
</translation>
<translation>
<language>ko-KR</language>
<approved>false</approved>
</translation>
<translation>
<language>lo-LA</language>
<approved>false</approved>
</translation>
<translation>
<language>lv-LV</language>
<approved>false</approved>
</translation>
<translation>
<language>nl-NL</language>
<approved>false</approved>
</translation>
<translation>
<language>pl-PL</language>
<approved>false</approved>
</translation>
<translation>
<language>pt-BR</language>
<approved>false</approved>
</translation>
<translation>
<language>pt-PT</language>
<approved>false</approved>
</translation>
<translation>
<language>ro-RO</language>
<approved>false</approved>
</translation>
<translation>
<language>ru-RU</language>
<approved>false</approved>
</translation>
<translation>
<language>si-SI</language>
<approved>false</approved>
</translation>
<translation>
<language>sk-SK</language>
<approved>false</approved>
</translation>
<translation>
<language>sl-SI</language>
<approved>false</approved>
</translation>
<translation>
<language>sr-Cyrl-RS</language>
<approved>false</approved>
</translation>
<translation>
<language>sr-Latn-RS</language>
<approved>false</approved>
</translation>
<translation>
<language>tr-TR</language>
<approved>false</approved>
</translation>
<translation>
<language>uk-UA</language>
<approved>false</approved>
</translation>
<translation>
<language>vi-VN</language>
<approved>false</approved>
</translation>
<translation>
<language>zh-CN</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>Manager</name>
<description/>
<comment/>
<translations>
<translation>
<language>ar-SA</language>
<approved>false</approved>
</translation>
<translation>
<language>az-Latn-AZ</language>
<approved>false</approved>
</translation>
<translation>
<language>bg-BG</language>
<approved>false</approved>
</translation>
<translation>
<language>cs-CZ</language>
<approved>false</approved>
</translation>
<translation>
<language>de-DE</language>
<approved>false</approved>
</translation>
<translation>
<language>el-GR</language>
<approved>false</approved>
</translation>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-ES</language>
<approved>false</approved>
</translation>
<translation>
<language>fi-FI</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-FR</language>
<approved>false</approved>
</translation>
<translation>
<language>hy-AM</language>
<approved>false</approved>
</translation>
<translation>
<language>it-IT</language>
<approved>false</approved>
</translation>
<translation>
<language>ja-JP</language>
<approved>false</approved>
</translation>
<translation>
<language>ko-KR</language>
<approved>false</approved>
</translation>
<translation>
<language>lo-LA</language>
<approved>false</approved>
</translation>
<translation>
<language>lv-LV</language>
<approved>false</approved>
</translation>
<translation>
<language>nl-NL</language>
<approved>false</approved>
</translation>
<translation>
<language>pl-PL</language>
<approved>false</approved>
</translation>
<translation>
<language>pt-BR</language>
<approved>false</approved>
</translation>
<translation>
<language>pt-PT</language>
<approved>false</approved>
</translation>
<translation>
<language>ro-RO</language>
<approved>false</approved>
</translation>
<translation>
<language>ru-RU</language>
<approved>false</approved>
</translation>
<translation>
<language>si-SI</language>
<approved>false</approved>
</translation>
<translation>
<language>sk-SK</language>
<approved>false</approved>
</translation>
<translation>
<language>sl-SI</language>
<approved>false</approved>
</translation>
<translation>
<language>sr-Cyrl-RS</language>
<approved>false</approved>
</translation>
<translation>
<language>sr-Latn-RS</language>
<approved>false</approved>
</translation>
<translation>
<language>tr-TR</language>
<approved>false</approved>
</translation>
<translation>
<language>uk-UA</language>
<approved>false</approved>
</translation>
<translation>
<language>vi-VN</language>
<approved>false</approved>
</translation>
<translation>
<language>zh-CN</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
<concept_node>
<name>Title</name>
<description/>
<comment/>
<translations>
<translation>
<language>ar-SA</language>
<approved>false</approved>
</translation>
<translation>
<language>az-Latn-AZ</language>
<approved>false</approved>
</translation>
<translation>
<language>bg-BG</language>
<approved>false</approved>
</translation>
<translation>
<language>cs-CZ</language>
<approved>false</approved>
</translation>
<translation>
<language>de-DE</language>
<approved>false</approved>
</translation>
<translation>
<language>el-GR</language>
<approved>false</approved>
</translation>
<translation>
<language>en-US</language>
<approved>false</approved>
</translation>
<translation>
<language>es-ES</language>
<approved>false</approved>
</translation>
<translation>
<language>fi-FI</language>
<approved>false</approved>
</translation>
<translation>
<language>fr-FR</language>
<approved>false</approved>
</translation>
<translation>
<language>hy-AM</language>
<approved>false</approved>
</translation>
<translation>
<language>it-IT</language>
<approved>false</approved>
</translation>
<translation>
<language>ja-JP</language>
<approved>false</approved>
</translation>
<translation>
<language>ko-KR</language>
<approved>false</approved>
</translation>
<translation>
<language>lo-LA</language>
<approved>false</approved>
</translation>
<translation>
<language>lv-LV</language>
<approved>false</approved>
</translation>
<translation>
<language>nl-NL</language>
<approved>false</approved>
</translation>
<translation>
<language>pl-PL</language>
<approved>false</approved>
</translation>
<translation>
<language>pt-BR</language>
<approved>false</approved>
</translation>
<translation>
<language>pt-PT</language>
<approved>false</approved>
</translation>
<translation>
<language>ro-RO</language>
<approved>false</approved>
</translation>
<translation>
<language>ru-RU</language>
<approved>false</approved>
</translation>
<translation>
<language>si-SI</language>
<approved>false</approved>
</translation>
<translation>
<language>sk-SK</language>
<approved>false</approved>
</translation>
<translation>
<language>sl-SI</language>
<approved>false</approved>
</translation>
<translation>
<language>sr-Cyrl-RS</language>
<approved>false</approved>
</translation>
<translation>
<language>sr-Latn-RS</language>
<approved>false</approved>
</translation>
<translation>
<language>tr-TR</language>
<approved>false</approved>
</translation>
<translation>
<language>uk-UA</language>
<approved>false</approved>
</translation>
<translation>
<language>vi-VN</language>
<approved>false</approved>
</translation>
<translation>
<language>zh-CN</language>
<approved>false</approved>
</translation>
</translations>
</concept_node>
</children>
</file_node>
<file_node>
<name>DeepLink</name>
<children>
@ -26,7 +817,6 @@
<name>DeepLinkText</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -158,7 +948,6 @@
<name>OpenInApp</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -290,7 +1079,6 @@
<name>OpeningDocument</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -422,7 +1210,6 @@
<name>StayInBrowser</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -559,7 +1346,6 @@
<name>DocumentsFileType</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -691,7 +1477,6 @@
<name>ErrorConnectionLost</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -823,7 +1608,6 @@
<name>FileLocation</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -955,7 +1739,6 @@
<name>FileName</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -1087,7 +1870,6 @@
<name>ImageFileType</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -1219,7 +2001,6 @@
<name>MailMergeFileType</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -1351,7 +2132,6 @@
<name>OpenSavedDocument</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -1483,7 +2263,6 @@
<name>SelectFilesType</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -1615,7 +2394,6 @@
<name>UsersWithoutAccess</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -1992,6 +2770,7 @@
<code_for_machine_translation/>
</custom_language>
</custom_languages>
<id_extractor_ignores/>
</editor_configuration>
<primary_language>en-US</primary_language>
<configuration>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<babeledit_project be_version="4.1.0" version="1.3">
<babeledit_project be_version="5.2.0" version="1.3">
<!--
BabelEdit project file
@ -26,7 +26,6 @@
<name>ErrorConfirmURLError</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -158,7 +157,6 @@
<name>ErrorExpiredActivationLink</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -290,7 +288,6 @@
<name>ErrorInvalidActivationLink</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -422,7 +419,6 @@
<name>ErrorNotAllowedOption</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -554,7 +550,6 @@
<name>ErrorUserNotFound</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -686,7 +681,6 @@
<name>InvalidUsernameOrPassword</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -818,7 +812,6 @@
<name>LoginWithAccountNotFound</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -950,7 +943,6 @@
<name>LoginWithBruteForce</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -1082,7 +1074,6 @@
<name>LoginWithBruteForceCaptcha</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -1214,7 +1205,6 @@
<name>RecaptchaInvalid</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -1346,7 +1336,6 @@
<name>SsoAttributesNotFound</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -1478,7 +1467,6 @@
<name>SsoAuthFailed</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -1610,7 +1598,6 @@
<name>SsoError</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -1742,7 +1729,6 @@
<name>SsoSettingsCantCreateUser</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -1874,7 +1860,6 @@
<name>SsoSettingsDisabled</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -2006,7 +1991,6 @@
<name>SsoSettingsEmptyToken</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -2138,7 +2122,6 @@
<name>SsoSettingsNotValidToken</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -2270,7 +2253,6 @@
<name>SsoSettingsUserTerminated</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -2407,7 +2389,6 @@
<name>CodeSubtitle</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -2539,7 +2520,6 @@
<name>CodeTitle</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -2671,7 +2651,6 @@
<name>ErrorInvalidText</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -2803,7 +2782,6 @@
<name>ExpiredCode</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -2935,7 +2913,6 @@
<name>ForgotPassword</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -3067,7 +3044,6 @@
<name>InvalidCode</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -3199,7 +3175,6 @@
<name>LDAPUsernamePlaceholder</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -3301,6 +3276,10 @@
<language>sl-SI</language>
<approved>false</approved>
</translation>
<translation>
<language>sr-Cyrl-RS</language>
<approved>false</approved>
</translation>
<translation>
<language>sr-Latn-RS</language>
<approved>false</approved>
@ -3327,7 +3306,6 @@
<name>MessageAuthorize</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -3459,7 +3437,6 @@
<name>MessageEmailConfirmed</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -3591,7 +3568,6 @@
<name>MessageSendPasswordRecoveryInstructionsOnEmail</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -3723,7 +3699,6 @@
<name>NotFoundCode</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -3855,7 +3830,6 @@
<name>PasswordRecoveryTitle</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -3987,7 +3961,6 @@
<name>RecoverAccess</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -4119,7 +4092,6 @@
<name>RecoverContactEmailPlaceholder</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -4251,7 +4223,6 @@
<name>RecoverTextBody</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -4383,7 +4354,6 @@
<name>Register</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -4515,7 +4485,6 @@
<name>RegisterTextBodyAfterDomainsList</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -4647,7 +4616,6 @@
<name>RegisterTextBodyBeforeDomainsList</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -4779,7 +4747,6 @@
<name>RegisterTitle</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -4911,7 +4878,6 @@
<name>RegistrationEmailWatermark</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -5043,7 +5009,6 @@
<name>RememberHelper</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -5175,7 +5140,6 @@
<name>ResendCode</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -5307,7 +5271,6 @@
<name>SignInLDAP</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -5409,6 +5372,10 @@
<language>sl-SI</language>
<approved>false</approved>
</translation>
<translation>
<language>sr-Cyrl-RS</language>
<approved>false</approved>
</translation>
<translation>
<language>sr-Latn-RS</language>
<approved>false</approved>
@ -5435,7 +5402,6 @@
<name>SignInLdapHelper</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -5537,6 +5503,10 @@
<language>sl-SI</language>
<approved>false</approved>
</translation>
<translation>
<language>sr-Cyrl-RS</language>
<approved>false</approved>
</translation>
<translation>
<language>sr-Latn-RS</language>
<approved>false</approved>
@ -5563,7 +5533,6 @@
<name>UserIsAlreadyRegistered</name>
<description/>
<comment/>
<default_text/>
<translations>
<translation>
<language>ar-SA</language>
@ -5940,6 +5909,7 @@
<code_for_machine_translation/>
</custom_language>
</custom_languages>
<id_extractor_ignores/>
</editor_configuration>
<primary_language>en-US</primary_language>
<configuration>

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "يمكنك إضافة أعضاء الفريق الجدد يدويًا أو دعوتهم عبر رابط.",
"AddNewLink": "إضافة رابط جديد",
"All": "كل",
"AllFiles": "كل الملفات",
"AllLinksAreDisabled": "جميع الروابط معطلة",
"AppointNewOwner": "لقد قمت بتعيين مالك جديد",
"ArchiveAction": "أرشيف فارغ",
@ -78,7 +77,6 @@
"FolderRemoved": "تم نقل المجلد إلى سلة المهملات",
"FolderRenamed": "تمت إعادة تسمية المجلد \"{{folderTitle}}\" إلى \"{{newFoldedTitle}}\"",
"Forms": "نماذج",
"FormsTemplates": "قوالب النماذج",
"GeneralLinkDeletedSuccessfully": "تم إنشاء الرابط العام الجديد بنجاح",
"GoToMyRooms": "اذهب إلى الغرف",
"GoToPersonal": "اذهب إلى المستندات",

View File

@ -0,0 +1 @@
{}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "مجلد WebDAV",
"FolderTitleYandex": "مجلد Yandex",
"FormTemplates": "قوالب جاهزة",
"LinkCopySuccess": "تم نسخ الرابط إلى الحافظة",
"LinkHasExpiredAndHasBeenDisabled": "تم انتهاء صلاحية الرابط وتم تعطيله",
"LinkValidTime": "هذا الرابط صالح لمدة {{days_count}} أيام فقط.",
"NewForm": "نموذج PDF",

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "Yeni komanda üzvlərini əl ilə əlavə edə və ya onları keçid vasitəsilə dəvət edə bilərsiniz.",
"AddNewLink": "Yeni keçid əlavə edin",
"All": "Bütün",
"AllFiles": "Bütün fayllar",
"AllLinksAreDisabled": "Bütün keçidlər deaktiv edilib",
"AppointNewOwner": "Siz yeni sahib təyin etdiniz.",
"ArchiveAction": "Boş arxiv",
@ -78,7 +77,6 @@
"FolderRemoved": "Qovluq zibil qutusuna göndərildi",
"FolderRenamed": "'{{folderTitle}}' qovluğunun adı '{{newFoldedTitle}}' olaraq dəyişdirildi ",
"Forms": "Anketlər",
"FormsTemplates": "Anket şablonları",
"GeneralLinkDeletedSuccessfully": "Yeni ümumi link uğurla yaradıldı",
"GoToMyRooms": "Otaqlarım bölməsinə keçin",
"GoToPersonal": "Sənədlər bölməsinə keçin",

View File

@ -0,0 +1 @@
{}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "WebDAV Kataloqu",
"FolderTitleYandex": "Yandex Kataloqu",
"FormTemplates": "Anket şablonları",
"LinkCopySuccess": "Link buferə köçürüldü",
"LinkHasExpiredAndHasBeenDisabled": "Keçidin vaxtı bitib və deaktiv edilib",
"LinkValidTime": "Bu link yalnız {{days_count}} gün ərzində etibarlıdır.",
"NewForm": "PDF forma",

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "Можете да добавите нови членове на екипа ръчно или да ги поканите чрез линк.",
"AddNewLink": "Добави нов линк",
"All": "Всички",
"AllFiles": "Всички файлове",
"AllLinksAreDisabled": "Всички линкове са деактивирани",
"AppointNewOwner": "Назначили сте нов собственик.",
"ArchiveAction": "Празен архив",
@ -78,7 +77,6 @@
"FolderRemoved": "Папката е преместена в Кошчето",
"FolderRenamed": "Папката '{{folderTitle}}' е преименувана на '{{newFoldedTitle}}'",
"Forms": "Формуляри",
"FormsTemplates": "Шаблони за формуляри",
"GeneralLinkDeletedSuccessfully": "Нов главен линк създаден успешно",
"GoToMyRooms": "Отидете в стаи",
"GoToPersonal": "Отидете в Документи",

View File

@ -0,0 +1 @@
{}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "WebDAV директория",
"FolderTitleYandex": "Yandex директория",
"FormTemplates": "Шаблони на формуляри",
"LinkCopySuccess": "Връзката беше копирана в клипборда",
"LinkHasExpiredAndHasBeenDisabled": "Линкът изтече и беше деактивиран",
"LinkValidTime": "Този линк е валиден само за {{days_count}} дни.",
"NewForm": "PDF формуляр",

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "Nové členy týmu můžete přidat ručně nebo je pozvat prostřednictvím odkazu.",
"AddNewLink": "Přidat nový odkaz",
"All": "Vše",
"AllFiles": "Všechny soubory",
"AllLinksAreDisabled": "Všechny odkazy jsou zakázány",
"AppointNewOwner": "Jmenovali jste nového majitele.",
"ArchiveAction": "Prázdný archiv",
@ -78,7 +77,6 @@
"FolderRemoved": "Složka přesunuta do koše",
"FolderRenamed": "Složka '{{folderTitle}}' je přejmenována na '{{newFoldedTitle}}'",
"Forms": "Formuláře",
"FormsTemplates": "Šablony formulářů",
"GeneralLinkDeletedSuccessfully": "Úspěšně vytvořen nový obecný odkaz",
"GoToMyRooms": "Přejít do sekce místnosti",
"GoToPersonal": "Přejít na Dokumenty",

View File

@ -0,0 +1 @@
{}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "Adresář WebDAV",
"FolderTitleYandex": "Adresář Yandex",
"FormTemplates": "Šablony formulářů",
"LinkCopySuccess": "Odkaz byl zkopírován do schránky",
"LinkHasExpiredAndHasBeenDisabled": "Platnost odkazu vypršela a byl zakázán",
"LinkValidTime": "Tento odkaz je platný pouze po dobu {{days_count}} dnů.",
"NewForm": "PDF formulář",

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "Sie können neue Teammitglieder manuell hinzufügen oder sie über einen Link einladen.",
"AddNewLink": "Neuen Link hinzufügen",
"All": "Alle",
"AllFiles": "Alle Dateien",
"AllLinksAreDisabled": "Alle Links sind deaktiviert",
"AppointNewOwner": "Sie haben einen neuen Besitzer ernannt.",
"ArchiveAction": "Leeres Archiv",
@ -78,7 +77,6 @@
"FolderRemoved": "Ordner wurde in den Papierkorb verschoben",
"FolderRenamed": "Der Ordner wurde von '{{folderTitle}}' in '{{newFoldedTitle}}' umbenannt",
"Forms": "Formulare",
"FormsTemplates": "Vorlagen für Formulare",
"GeneralLinkDeletedSuccessfully": "Neuer allgemeiner Link erfolgreich erstellt",
"GoToMyRooms": "Zu Räume",
"GoToPersonal": "Zu Dokumente",

View File

@ -0,0 +1 @@
{}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "WebDAV Verzeichnis",
"FolderTitleYandex": "Yandex Verzeichnis",
"FormTemplates": "Formularvorlagen",
"LinkCopySuccess": "Der Link wurde in die Zwischenablage kopiert",
"LinkHasExpiredAndHasBeenDisabled": "Der Link ist abgelaufen und wurde deaktiviert.",
"LinkValidTime": "Dieser Link ist nur für {{days_count}} Tage gültig.",
"NewForm": "PDF-Formular",

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "Μπορείτε να προσθέσετε νέα μέλη της ομάδας μη αυτόματα ή να τα προσκαλέσετε μέσω συνδέσμου.",
"AddNewLink": "Προσθήκη νέου συνδέσμου",
"All": "Όλα",
"AllFiles": "Όλα τα αρχεία",
"AllLinksAreDisabled": "Όλοι οι σύνδεσμοι είναι απενεργοποιημένοι",
"AppointNewOwner": "Έχετε ορίσει νέο ιδιοκτήτη.",
"ArchiveAction": "Κενό αρχείο",
@ -78,7 +77,6 @@
"FolderRemoved": "Ο φάκελος μεταφέρθηκε στον Κάδο απορριμμάτων",
"FolderRenamed": "Ο φάκελος '{{folderTitle}}' μετονομάστηκε σε '{{newFoldedTitle}}'",
"Forms": "Φόρμες",
"FormsTemplates": "Πρότυπα φορμών",
"GeneralLinkDeletedSuccessfully": "Ο νέος γενικός σύνδεσμος δημιουργήθηκε με επιτυχία",
"GoToMyRooms": "Μετάβαση στο «Τα δωμάτιά»",
"GoToPersonal": "Μετάβαση στο «Τα έγγραφά»",

View File

@ -0,0 +1 @@
{}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "Κατάλογος WebDAV",
"FolderTitleYandex": "Κατάλογος Yandex",
"FormTemplates": "Πρότυπα φόρμας",
"LinkCopySuccess": "Ο σύνδεσμος έχει αντιγραφεί στο πρόχειρο",
"LinkHasExpiredAndHasBeenDisabled": "Ο σύνδεσμος έχει λήξει και έχει απενεργοποιηθεί",
"LinkValidTime": "Αυτός ο σύνδεσμος ισχύει μόνο για {{days_count}} ημέρες.",
"NewForm": "Φόρμα PDF",

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "You can add new team members manually or invite them via link.",
"AddNewLink": "Add new link",
"All": "All",
"AllFiles": "All files",
"AllLinksAreDisabled": "All links are disabled",
"AppointNewOwner": "You have appointed a new owner.",
"ArchiveAction": "Empty archive",
@ -80,7 +79,6 @@
"FolderRemoved": "Folder moved to Trash",
"FolderRenamed": "The folder '{{folderTitle}}' is renamed to '{{newFoldedTitle}}'",
"Forms": "Forms",
"FormsTemplates": "Forms templates",
"GeneralLinkDeletedSuccessfully": "New general link created successfully",
"GoToMyRooms": "Go to rooms",
"GoToPersonal": "Go to Documents",

View File

@ -0,0 +1,9 @@
{
"FillOutButtonLabel": "Fill in",
"FillOutDescription": "Fill in the fields of the original form in the editor window.",
"FillOutTitle": "Fill out the form yourself",
"FillPDFDialogTitle": "Fill in as",
"ShareCollectButtonLabel": "Copy to room",
"ShareCollectDescription": "Share your form and collect responses via a Form filling room.",
"ShareCollectTitle": "Share"
}

View File

@ -14,7 +14,6 @@
"HotkeysCreateSpreadsheet": "Create spreadsheet",
"HotkeysCreatingObjects": "Creating items",
"HotkeysCutSelected": "Cut selected items to the clipboard",
"HotkeysRenameSelected": "Rename selected item",
"HotkeysExtendSelectionDown": "Extend selection down",
"HotkeysExtendSelectionLeft": "Extend selection left",
"HotkeysExtendSelectionRight": "Extend selection right",
@ -31,6 +30,7 @@
"HotkeysPlayPause": "Play/Pause",
"HotkeysRedoLastUndoneAction": "Redo the last undone action",
"HotkeysRemove": "Remove selected items",
"HotkeysRenameSelected": "Rename selected item",
"HotkeysSelectAll": "Select all visible folders and files",
"HotkeysSelectDown": "Select next item down",
"HotkeysSelection": "Selecting items",

View File

@ -10,12 +10,16 @@
"ExpectUsers": "Expect users",
"FeedLinkWasDeleted": "Link was deleted",
"FeedLocationLabel": "Folder «{{folderTitle}}»",
"FeedLocationLabelFrom": "from «{{folderTitle}}»",
"FeedLocationRoomLabel": "Room «{{folderTitle}}»",
"FileConverted": "File converted.",
"FileCopied": "Files copied.",
"FileCopiedTo": "Files copied to «{{folderTitle}}»",
"FileCreated": "File created.",
"FileDeleted": "Files removed.",
"FileExtension": "File extension",
"FileMoved": "Files moved.",
"FileMovedTo": "File moved to «{{folderTitle}}»",
"FileRenamed": "File renamed.",
"FilesEmptyScreenText": "See file and folder details here",
"FileUploaded": "Files added.",
@ -27,6 +31,7 @@
"GalleryEmptyScreenText": "See form template details here",
"GroupsEmptyScreenText": "See group details here",
"HistoryEmptyScreenText": "Activity history will be shown here",
"HistoryRoomCopied": "<1>«{{roomTitle}}»</1> room copied",
"HistoryRoomCreated": "<1>«{{roomTitle}}»</1> room created",
"HistoryThirdParty": "History display is not available for public rooms with connected third-party storages",
"InfoBanner": "The list of invited users includes the owner and/or admins of this {{productName}} with full access to all rooms. The owner and/or administrator cannot be assigned other access rights. Once added to the room, they will be notified of all changes.",
@ -38,6 +43,7 @@
"RoomExternalLinkCreated": "Link created.",
"RoomExternalLinkDeleted": "Link <1>«{{linkTitle}}»</1> deleted.",
"RoomExternalLinkRenamed": "Link <1>«{{oldLinkTitle}}»</1> renamed to <1>«{{linkTitle}}»</1>",
"RoomExternalLinkRevoked": "Previous link <1>«{{linkTitle}}»</1> revoked <br/> New Link <1>«{{linkTitle}}»</1> created",
"RoomGroupAdded": "Groups added.",
"RoomGroupRemove": "Group removed",
"RoomLogoCreated": "Icon changed",

View File

@ -2,7 +2,6 @@
"PDFFormDialogTitle": "Ready-to-fill-out PDF form",
"PDFFormEditDialogDescription": "Do you want to switch to the form editing mode? Please note that the form will no longer be available for filling out and you will need to click the Start filling button again after editing to fill it out.",
"PDFFormEditDialogTitle": "Form editing",
"PDFFormInviteDescription": "Your PDF form is ready to be filled out. Copy public link to start the form filling process or Invite other users to this room.",
"PDFFormIsReadyToast": "PDF form <1>{{filename}}</1> is ready to be filled out.",
"PDFFormSuccessfullyCreatedDescription": "Your PDF form is ready to be filled out. Start collecting completed form copies from other users."
"PDFFormSuccessfullyCreatedDescription": "Your PDF form is ready to be filled out. Copy public link to start the form filling process or Invite other users to this room."
}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "WebDAV Directory",
"FolderTitleYandex": "Yandex Directory",
"FormTemplates": "Form templates",
"LinkCopySuccess": "Link has been copied to the clipboard",
"LinkHasExpiredAndHasBeenDisabled": "The link has expired and has been disabled",
"LinkValidTime": "This link is valid for {{days_count}} days only.",
"NewForm": "PDF Form",

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "Puede añadir nuevos miembros del equipo manualmente o invitarlos a través de un enlace.",
"AddNewLink": "Añadir nuevo enlace",
"All": "Todos",
"AllFiles": "Todos los archivos",
"AllLinksAreDisabled": "Todos los enlaces están desactivados",
"AppointNewOwner": "Ha asignado un nuevo propietario.",
"ArchiveAction": "Archivo vacío",
@ -78,7 +77,6 @@
"FolderRemoved": "Carpeta movida a la Papelera",
"FolderRenamed": "El nombre de la carpeta '{{folderTitle}}' se ha cambiado a '{{newFoldedTitle}}'",
"Forms": "Formularios",
"FormsTemplates": "Plantillas de formularios",
"GeneralLinkDeletedSuccessfully": "Se ha creado correctamente un nuevo enlace general ",
"GoToMyRooms": "Ir a Salas",
"GoToPersonal": "Ir a Documentos",

View File

@ -0,0 +1 @@
{}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "Directorio WebDAV",
"FolderTitleYandex": "Directorio Yandex",
"FormTemplates": "Plantillas de formulario",
"LinkCopySuccess": "El enlace se ha copiado en el portapapeles",
"LinkHasExpiredAndHasBeenDisabled": "El enlace ha expirado y se ha desactivado",
"LinkValidTime": "Este enlace solo es válido durante {{days_count}} días.",
"NewForm": "Formulario PDF",

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "Voit lisätä uusia tiimin jäseniä manuaalisesti tai kutsua heidät linkin kautta.",
"AddNewLink": "Lisää uusi linkki",
"All": "Kaikki",
"AllFiles": "Kaikki tiedostot",
"AllLinksAreDisabled": "Kaikki linkit ovat poistettu käytöstä",
"AppointNewOwner": "Olet nimittänyt uuden omistajan.",
"ArchiveAction": "Tyhjä arkisto",
@ -78,7 +77,6 @@
"FolderRemoved": "Kansio siirretty roskakoriin",
"FolderRenamed": "Kansio {{folderTitle}} nimettiin uudelleen nimeksi {{newFoldedTitle}}",
"Forms": "Lomakkeet",
"FormsTemplates": "Mallilomakkeet",
"GeneralLinkDeletedSuccessfully": "Uusi yleinen linkki onnistuneesti luotu",
"GoToMyRooms": "Mene huoneisiin",
"GoToPersonal": "Mene Dokumentteihin",

View File

@ -0,0 +1 @@
{}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "WebDAV-hakemisto",
"FolderTitleYandex": "Yandex-hakemisto",
"FormTemplates": "Lomakepohjat",
"LinkCopySuccess": "Linkki on kopioitu leikepöydälle",
"LinkHasExpiredAndHasBeenDisabled": "Linkki on vanhentunut ja se on poistettu käytöstä",
"LinkValidTime": "Linkki on voimassa vain {{days_count}} päivää.",
"NewForm": "PDF-lomake",

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "Vous pouvez ajouter de nouveaux membres de léquipe manuellement ou les inviter via un lien.",
"AddNewLink": "Ajouter un nouveau lien",
"All": "Tout",
"AllFiles": "Tous les fichiers",
"AllLinksAreDisabled": "Tous les liens sont désactivés",
"AppointNewOwner": "Vous avez choisi un nouveau propriétaire.",
"ArchiveAction": "Archives vides",
@ -78,7 +77,6 @@
"FolderRemoved": "Dossier déplacé vers la corbeille",
"FolderRenamed": "Le dossier '{{folderTitle}}' est renommé en '{{newFoldedTitle}}'",
"Forms": "Formulaires",
"FormsTemplates": "Modèles de formulaires",
"GeneralLinkDeletedSuccessfully": "Nouveau lien général créé avec succès",
"GoToMyRooms": "Aller dans les salles",
"GoToPersonal": "Aller dans Documents",

View File

@ -0,0 +1 @@
{}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "Répertoire WebDAV",
"FolderTitleYandex": "Répertoire Yandex",
"FormTemplates": "Modèles de formulaire",
"LinkCopySuccess": "Le lien a été copié dans le Presse-papiers",
"LinkHasExpiredAndHasBeenDisabled": "Le lien a expiré et a été désactivé",
"LinkValidTime": "Ce lien nest valable que pour les {{days_count}} jours.",
"NewForm": "Formulaire PDF",

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "Դուք կարող եք ձեռքով ավելացնել թիմի նոր անդամներ կամ հրավիրել նրանց հղման միջոցով:",
"AddNewLink": "Ավելացնել նոր հղում",
"All": "Բոլոր",
"AllFiles": "Բոլոր ֆայլերը",
"AllLinksAreDisabled": "Բոլոր հղումներն անջատված են",
"AppointNewOwner": "Դուք նոր սեփականատեր եք նշանակել։",
"ArchiveAction": "Դատարկ արխիվ",
@ -78,7 +77,6 @@
"FolderRemoved": "Պանակը տեղափոխվեց աղբարկղ",
"FolderRenamed": "Պանակը '{{folderTitle}}'-ից վերանվանվել է'{{newFoldedTitle}}'",
"Forms": "Ձևեր",
"FormsTemplates": "Ձեւանմուշներ",
"GeneralLinkDeletedSuccessfully": "Նոր ընդհանուր հղումը հաջողությամբ ստեղծվեց",
"GoToMyRooms": "Գնալ Իմ սենյակները",
"GoToPersonal": "Գնալ Փաստաթղթերը",

View File

@ -0,0 +1 @@
{}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "WebDAV գրացուցակ",
"FolderTitleYandex": "Yandex գրացուցակ",
"FormTemplates": "Ձեւանմուշներ",
"LinkCopySuccess": "Հղումը պատճենվել է սեղմատախտակին",
"LinkHasExpiredAndHasBeenDisabled": "Այս հղումն ուժի մեջ ",
"LinkValidTime": "Այս հղումը վավեր է միայն {{days_count}} օր:",
"NewForm": "PDF Ձև",

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "Puoi aggiungere nuovi membri del team manualmente o invitarli tramite link.",
"AddNewLink": "Aggiungi nuovo link",
"All": "Tutti",
"AllFiles": "Tutti i file",
"AllLinksAreDisabled": "Tutti i link sono disabilitati",
"AppointNewOwner": "Hai nominato un nuovo proprietario.",
"ArchiveAction": "Archivio vuoto",
@ -78,7 +77,6 @@
"FolderRemoved": "Cartella spostata nel cestino",
"FolderRenamed": "La cartella '{{folderTitle}}' è stata rinominata in '{{newFoldedTitle}}'",
"Forms": "Moduli",
"FormsTemplates": "Modelli di moduli",
"GeneralLinkDeletedSuccessfully": "Nuovo link generale è stato creato con successo",
"GoToMyRooms": "Vai alle stanze",
"GoToPersonal": "Vai a I Documenti",

View File

@ -0,0 +1 @@
{}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "Cartella di WebDAV",
"FolderTitleYandex": "Cartella di Yandex",
"FormTemplates": "Modelli di moduli",
"LinkCopySuccess": "Il link è stato copiato negli appunti",
"LinkHasExpiredAndHasBeenDisabled": "Il link è scaduto ed è stato disattivato",
"LinkValidTime": "Questo link è valido solo per {{days_count}} giorni.",
"NewForm": "Modulo PDF",

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "新しいチームメンバーを手動で追加したり、リンクで招待したりすることができます。",
"AddNewLink": "新しいリンクの追加",
"All": "すべて",
"AllFiles": "すべてのファイル",
"AllLinksAreDisabled": "すべてのリンクは無効です",
"AppointNewOwner": "新しい所有者を任命されました。",
"ArchiveAction": "空のアーカイブ",
@ -78,7 +77,6 @@
"FolderRemoved": "フォルダがゴミ箱に移動",
"FolderRenamed": "フォルダ'{{folderTitle}}'の名前が'{{newFoldedTitle}}'に変更されます。'",
"Forms": "フォーム",
"FormsTemplates": "フォームのテンプレート",
"GeneralLinkDeletedSuccessfully": "新しい一般リンクが正常に作成されました",
"GoToMyRooms": "「ルーム」へ",
"GoToPersonal": "文書」へ",

View File

@ -0,0 +1 @@
{}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "WebDAVディレクトリ",
"FolderTitleYandex": "Yandexディレクトリ",
"FormTemplates": "フォームのテンプレート",
"LinkCopySuccess": "リンクがクリップボードにコピーされました",
"LinkHasExpiredAndHasBeenDisabled": "リンクは有効期限が切れたため無効になっています",
"LinkValidTime": "このリンクは {{days_count}} 日間のみ有効です。",
"NewForm": "PDFフォーム",

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "새 팀원을 수동으로 추가하거나 링크를 통해 초대할 수 있습니다.",
"AddNewLink": "새 링크 추가",
"All": "전체",
"AllFiles": "전체 파일",
"AllLinksAreDisabled": "모든 링크가 비활성화되었습니다",
"AppointNewOwner": "새로운 소유자를 지정하셨습니다.",
"ArchiveAction": "아카이브 비우기",
@ -78,7 +77,6 @@
"FolderRemoved": "폴더가 휴지통으로 이동되었습니다",
"FolderRenamed": "'{{folderTitle}}' 폴더 이름이 '{{newFoldedTitle}}'으로 변경되었습니다",
"Forms": "양식",
"FormsTemplates": "양식 템플릿",
"GeneralLinkDeletedSuccessfully": "새로운 일반 링크가 생성되었습니다",
"GoToMyRooms": "내 방으로 이동",
"GoToPersonal": "문서로 이동",

View File

@ -0,0 +1 @@
{}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "WebDAV 디렉토리",
"FolderTitleYandex": "Yandex 디렉토리",
"FormTemplates": "양식 템플릿",
"LinkCopySuccess": "링크가 클립보드에 복사되었습니다",
"LinkHasExpiredAndHasBeenDisabled": "링크가 만료되어 비활성화되었습니다",
"LinkValidTime": "이 링크는 {{days_count}}일 동안만 유효합니다.",
"NewForm": "PDF 양식",

View File

@ -1,7 +1,6 @@
{
"AddMembersDescription": "ທ່ານສາມາດເພີ່ມສະມາຊິກທີມໃຫມ່ດ້ວຍຕົນເອງ ຫຼືເຊີນເຂົາເຈົ້າຜ່ານລິ້ງ.",
"All": "ທັງໝົດ",
"AllFiles": "ເອກະສານທັງໝົດ",
"ArchiveAction": "ແຟ້ມຈັດເກັບຫວ່າງເປົ່າ",
"ArchivedRoomsAction": "ຫ້ອງຖືກເກັບໄວ້",
"ArchiveEmptyScreen": "ທ່ານສາມາດຈັດເກັບຫ້ອງທີ່ທ່ານບໍ່ໄດ້ໃຊ້ ແລະກູ້ພວກມັນຄືນມາໃນ {{productName}} ຂອງທ່ານ ໃນທຸກເວລາ ຫຼືລຶບພວກມັນອອກຖາວອນ. ຫ້ອງເຫຼົ່ານີ້ຈະປາກົດຢູ່ທີ່ນີ້.",
@ -45,7 +44,6 @@
"FolderRemoved": "ຍ້າຍແຟ້ມໄປທີ່ຖັງຂີ້ເຫຍື້ອ",
"FolderRenamed": "ໂຟນເດີ '{{folderTitle}}' ຖືກປ່ຽນເປັນ '{{newFoldedTitle}}'",
"Forms": "ແບບຟອມ",
"FormsTemplates": "ຮູບແບບແບບຟອມ",
"GeneralLinkDeletedSuccessfully": "ສ້າງລິ້ງທົ່ວໄປໃໝ່ສຳເລັດແລ້ວ ",
"GoToMyRooms": "ໄປທີ່ຫ້ອງຂອງຂ້ອຍ",
"GoToPersonal": "ໄປທີ່ເອກະສານຂອງຂ້ອຍ",

View File

@ -0,0 +1 @@
{}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "ໄດເລກະທໍລີ WebDAV",
"FolderTitleYandex": "ໄດເລກະທໍລີ Yandex",
"FormTemplates": "ຮູບແບບແບບຟອມ",
"LinkCopySuccess": "ລິ້ງໄດ້ຖືກສໍາເນົາໄປ clipboard",
"LinkValidTime": "ລິ້ງນີ້ໃຊ້ໄດ້ເປັນເວລາ {{days_count}} ມື້ເທົ່ານັ້ນ.",
"NewForm": "ແບບຟອມ PDF",
"Other": "ອື່ນໆ",

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "Jūs varat pievienot jaunus komandas dalībniekus manuāli vai uzaicināt, izmantojot saiti.",
"AddNewLink": "Pievienot jaunu saiti",
"All": "Viss",
"AllFiles": "Visi faili",
"AllLinksAreDisabled": "Visas saites ir atspējotas",
"AppointNewOwner": "Jūs iecēlāt jaunu īpašnieku.",
"ArchiveAction": "Vietne izņemta no arhīva",
@ -78,7 +77,6 @@
"FolderRemoved": "Mape ir pārvietota uz atkritni",
"FolderRenamed": "Mape '{{folderTitle}}' ir pārvietota uz '{{newFoldedTitle}}'",
"Forms": "Veidlapas",
"FormsTemplates": "Veidlapu veidnes",
"GeneralLinkDeletedSuccessfully": "Jauna vispārīga saite ir veiksmīgi izveidota",
"GoToMyRooms": "Doties uz telpas",
"GoToPersonal": "Pāriet uz Dokumenti",

View File

@ -0,0 +1 @@
{}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "WebDAV direktorijs",
"FolderTitleYandex": "Yandex direktorijs",
"FormTemplates": "Veidlapu veidnes",
"LinkCopySuccess": "Saite ir nokopēta starpliktuvē",
"LinkHasExpiredAndHasBeenDisabled": "Saitei ir beidzies derīguma termiņš, un tā ir atspējota",
"LinkValidTime": "Šī saite ir derīga tikai {{days_count}} dienu (-as).",
"NewForm": "PDF veidlapa",

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "U kunt nieuwe teamleden handmatig toevoegen of uitnodigen door middel van een link.",
"AddNewLink": "Voeg nieuwe link toe",
"All": "Alle",
"AllFiles": "Alle bestanden",
"AllLinksAreDisabled": "Alle links zijn uitgeschakeld",
"AppointNewOwner": "U heeft een nieuwe eigenaar aangesteld.",
"ArchiveAction": "Archief leegmaken",
@ -78,7 +77,6 @@
"FolderRemoved": "Map verplaatst naar Prullenbak",
"FolderRenamed": "De map '{{folderTitle}}' is hernoemd naar '{{newFoldedTitle}}'",
"Forms": "Formulieren",
"FormsTemplates": "Formulieren sjablonen",
"GeneralLinkDeletedSuccessfully": "Nieuwe algemene link succesvol aangemaakt",
"GoToMyRooms": "Ga naar kamers",
"GoToPersonal": "Ga naar Documenten",

View File

@ -0,0 +1 @@
{}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "WebDAV Directory",
"FolderTitleYandex": "Yandex Directory",
"FormTemplates": "Formulier sjablonen",
"LinkCopySuccess": "Link is gekopieerd naar het klembord",
"LinkHasExpiredAndHasBeenDisabled": "De link is verlopen en uitgeschakeld",
"LinkValidTime": "Deze link is slechts {{days_count}} dagen geldig.",
"NewForm": "PDF-formulier",

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "Możesz dodać nowych członków zespołu ręcznie lub zaprosić ich za pomocą linku.",
"AddNewLink": "Dodaj nowy link",
"All": "Wszystko",
"AllFiles": "Wszystkie pliki",
"AllLinksAreDisabled": "Wszystkie linki są wyłączone",
"AppointNewOwner": "Wyznaczono nowego właściciela.",
"ArchiveAction": "Opróżnij archiwum",
@ -78,7 +77,6 @@
"FolderRemoved": "Folder został przeniesiony do kosza",
"FolderRenamed": "Nazwa folderu '{{folderTitle}}' została zmieniona na '{{newFoldedTitle}}'",
"Forms": "Formularze",
"FormsTemplates": "Szablony formularzy",
"GeneralLinkDeletedSuccessfully": "Nowy link główny został pomyślnie utworzony",
"GoToMyRooms": "Przejdź do pokoi",
"GoToPersonal": "Przejdź do Dokumentów",

View File

@ -0,0 +1 @@
{}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "Katalog WebDAV",
"FolderTitleYandex": "Katalog Yandex",
"FormTemplates": "Szablony formularza",
"LinkCopySuccess": "Link został skopiowany do schowka",
"LinkHasExpiredAndHasBeenDisabled": "Link wygasł i został wyłączony",
"LinkValidTime": "Link jest ważny tylko przez {{days_count}} dni.",
"NewForm": "Formularz PDF",

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "Você pode adicionar novos membros da equipe manualmente ou convidá-los por meio do link.",
"AddNewLink": "Adicionar novo link",
"All": "Todos",
"AllFiles": "Todos os arquivos",
"AllLinksAreDisabled": "Todos os links estão desativados",
"AppointNewOwner": "Você nomeou um novo proprietário.",
"ArchiveAction": "Arquivo vazio",
@ -78,7 +77,6 @@
"FolderRemoved": "Pasta movida para a lixeira",
"FolderRenamed": "A pasta '{{folderTitle}}' é renomeada para '{{newFoldedTitle}}'.",
"Forms": "Formulário",
"FormsTemplates": "Modelos de formulário",
"GeneralLinkDeletedSuccessfully": "Novo link geral criado com sucesso",
"GoToMyRooms": "Ir para minhas salas",
"GoToPersonal": "Ir para Documentos",

View File

@ -0,0 +1 @@
{}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "Diretório WebDAV",
"FolderTitleYandex": "Diretório Yandex",
"FormTemplates": "Modelos de formulário",
"LinkCopySuccess": "Link foi copiado para a área de trabalho",
"LinkHasExpiredAndHasBeenDisabled": "O link expirou e foi desativado",
"LinkValidTime": "Este link é válido apenas por {{days_count}} dias.",
"NewForm": "Formulário PDF",

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "Pode adicionar novos membros da equipa manualmente ou convidá-los através de um link.",
"AddNewLink": "Adicionar novo link",
"All": "Tudo",
"AllFiles": "Todos os ficheiros",
"AllLinksAreDisabled": "Todos os links estão desativados",
"AppointNewOwner": "Você nomeou um novo proprietário.",
"ArchiveAction": "Arquivo Vazio",
@ -78,7 +77,6 @@
"FolderRemoved": "Pasta movida para o lixo",
"FolderRenamed": "A pasta '{{folderTitle}}' é renomeada para '{{newFoldedTitle}}'",
"Forms": "Formulários",
"FormsTemplates": "Modelos de formulários",
"GeneralLinkDeletedSuccessfully": "Novo link geral criado com sucesso",
"GoToMyRooms": "Ir para As Minhas Salas",
"GoToPersonal": "Ir para os Documentos",

View File

@ -0,0 +1 @@
{}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "Diretório WebDAV",
"FolderTitleYandex": "Diretório Yandex",
"FormTemplates": "Modelos de formulário",
"LinkCopySuccess": "A ligação foi copiada para a área de transferência",
"LinkHasExpiredAndHasBeenDisabled": "O link expirou e foi desativado",
"LinkValidTime": "Esta hiperligação é válida apenas por {{days_count}} dias.",
"NewForm": "Formulário PDF",

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "Puteţi adăuga noi membri ai echipei manual sau îi puteţi invita prin intermediul unui link.",
"AddNewLink": "Adăugarea unui link nou",
"All": "Toate",
"AllFiles": "Toate fișierele",
"AllLinksAreDisabled": "Toate link-uri sunt dezactivate",
"AppointNewOwner": "Ați desemnat un nou proprietar.",
"ArchiveAction": "Arhivă goală",
@ -78,7 +77,6 @@
"FolderRemoved": "Dosarul mutat în Coșul de gunoi",
"FolderRenamed": "Dosarul '{{folderTitle}}' este redenumit în '{{newFoldedTitle}}'",
"Forms": "Forms",
"FormsTemplates": "Șabloane formulare",
"GeneralLinkDeletedSuccessfully": "Un link general a fost creat cu succes",
"GoToMyRooms": "Salt la Sălile",
"GoToPersonal": "Salt la Documentele",

View File

@ -0,0 +1 @@
{}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "Director WebDAV",
"FolderTitleYandex": "Director Yandex",
"FormTemplates": "Șabloane formular",
"LinkCopySuccess": "Încărcarea fișierului media eșuată",
"LinkHasExpiredAndHasBeenDisabled": "Link-ul a expirat și este dezactivat",
"LinkValidTime": "Acest link este valabil doar timp de {{days_count}} zile.",
"NewForm": "Formular PDF",

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "Вы можете добавить новых участников команды вручную или пригласить их по ссылке.",
"AddNewLink": "Добавить новую ссылку",
"All": "Все",
"AllFiles": "Все файлы",
"AllLinksAreDisabled": "Все ссылки отключены",
"AppointNewOwner": "Вы назначили нового владельца.",
"ArchiveAction": "Пустой архив",
@ -78,7 +77,6 @@
"FolderRemoved": "Папка перемещена в корзину",
"FolderRenamed": "Папка '{{folderTitle}}' переименована в '{{newFoldedTitle}}'",
"Forms": "Формы",
"FormsTemplates": "Шаблоны форм",
"GeneralLinkDeletedSuccessfully": "Новая общая ссылка успешно создана",
"GoToMyRooms": "Перейти в комнаты",
"GoToPersonal": "Перейти к Документам",

View File

@ -0,0 +1 @@
{}

View File

@ -287,7 +287,7 @@
"TypesAndPrivileges": " <1>Типы учетных записей администратора и их права</1> <br> <br> <2>Администратор {{productName}}</2> <br> Настройка {{productName}}, создание и управление комнатами, возможность приглашать пользователей и управлять ими в {{productName}} и в виртуальных комнатах, возможность управления правами доступа. <br> <br> <3>Администратор комнаты</3> <br> Администрирование и архивирование комнаты, приглашение пользователей и управление ими. К комнате можно назначить нескольких администраторов. <br> <br> <4>Опытный пользователь</4> <br> Опытные пользователи могут создавать и редактировать файлы в комнате, но не могут создавать комнаты, управлять пользователями или получать доступ к настройкам.",
"UnsavedChangesBody": "Если вы закроете меню настроек ссылки прямо сейчас, изменения не сохранятся.",
"UnsupportedFilesDescription": "Некоторые резервные файлы не поддерживаются. Нажмите \"Проверьте неподдерживаемые файлы\", чтобы загрузить список неподдерживаемых элементов",
"UnsupportedFilesWithUploadDesc": "Некоторые резервные файлы не поддерживаются. Нажмите \\\"Проверьте неподдерживаемые файлы\\\", чтобы загрузить список неподдерживаемых элементов, или нажмите \\\"Загрузить на сервер\\\", чтобы продолжить без них.",
"UnsupportedFilesWithUploadDesc": "Некоторые резервные файлы не поддерживаются. Нажмите \"Проверьте неподдерживаемые файлы\", чтобы загрузить список неподдерживаемых элементов, или нажмите \"Загрузить на сервер\", чтобы продолжить без них.",
"UpdatingStatistics": "Обновление статистики может занять много времени",
"UploadBackupData": "Загрузите резервную копию из нужного сервиса ниже, чтобы начать миграцию.",
"UploadToServer": "Загрузить на сервер",

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "Каталог WebDAV",
"FolderTitleYandex": "Каталог Яндекса",
"FormTemplates": "Шаблоны форм",
"LinkCopySuccess": "Ссылка скопирована в буфер обмена",
"LinkHasExpiredAndHasBeenDisabled": "Срок действия ссылки истек, она отключена",
"LinkValidTime": "Эта ссылка действительна только {{days_count}} дней.",
"NewForm": "PDF-форма",

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "කණ්ඩායමට නව සාමාජිකයින් අතින් එක් කිරීමට හෝ සබැඳියකින් ආරාධනා කිරීමට හැකිය.",
"AddNewLink": "නව සබැඳියක්",
"All": "සියල්ල",
"AllFiles": "සියළුම ගොනු",
"AllLinksAreDisabled": "සියලුම සබැඳි අබලයි",
"AppointNewOwner": "ඔබ නව හිමිකරුවෙකු පත් කර ඇත.",
"ArchiveAction": "සංරක්‍ෂණය හිස්ය",
@ -77,7 +76,6 @@
"FolderRemoved": "බහාලුම කුණුකූඩයට ගෙනගියා",
"FolderRenamed": "'{{folderTitle}}' බහාලුම '{{newFoldedTitle}}' ලෙස නම් කර ඇත",
"Forms": "ආකෘතිපත්‍ර",
"FormsTemplates": "ආකෘතිපත්‍ර අච්චු",
"GeneralLinkDeletedSuccessfully": "නව සාමාන්‍ය සබැඳිය සාර්ථකව සෑදිණි",
"GoToMyRooms": "කාමර වෙත යන්න",
"GoToPersonal": "ලේඛන වෙත යන්න",

View File

@ -0,0 +1 @@
{}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "WebDAV නාමාවලිය",
"FolderTitleYandex": "යාන්ඩෙක්ස් නාමාවලිය",
"FormTemplates": "ආකෘතිපත්‍ර අච්චු",
"LinkCopySuccess": "සබැඳිය පසුරුපුවරුවට පිටපත් විය",
"LinkHasExpiredAndHasBeenDisabled": "සබැඳිය කල් ඉකුත් වී අබල කර ඇත",
"LinkValidTime": "මෙම සබැඳිය දවස් {{days_count}}කට වලංගුය.",
"NewForm": "ආකෘතිපත්‍ර අච්චුව",

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "Nových členov tímu môžete pridať manuálne alebo ich pozvať prostredníctvom odkazu.",
"AddNewLink": "Pridať nový odkaz",
"All": "Všetko",
"AllFiles": "Všetky súbory",
"AllLinksAreDisabled": "Všetky odkazy sú deaktivované",
"AppointNewOwner": "Vymenovali ste nového vlastníka.",
"ArchiveAction": "Vyprázdniť archív",
@ -78,7 +77,6 @@
"FolderRemoved": "Priečinok bol presunutý do koša",
"FolderRenamed": "Priečinok '{{folderTitle}}' bol premenovaný na '{{newFoldedTitle}}'",
"Forms": "Formuláre",
"FormsTemplates": "Šablóny formulárov",
"GeneralLinkDeletedSuccessfully": "Nový hlavný odkaz úspešne vytvorený",
"GoToMyRooms": "Prejdite do miestnosti",
"GoToPersonal": "Prejdite do Dokumenty",

View File

@ -0,0 +1 @@
{}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "Priečinok WebDAV",
"FolderTitleYandex": "Priečinok Yandex",
"FormTemplates": "Šablóny formulára",
"LinkCopySuccess": "Odkaz bol skopírovaný do schránky",
"LinkHasExpiredAndHasBeenDisabled": "Platnosť odkazu vypršala a bol deaktivovaný",
"LinkValidTime": "Tento odkaz je platný iba {{days_count}} dní.",
"NewForm": "Formulár PDF",

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "Nove člane ekipe lahko dodate ročno ali pa jih povabite prek povezave.",
"AddNewLink": "Dodajte novo povezavo",
"All": "Vse",
"AllFiles": "Vse datoteke",
"AllLinksAreDisabled": "Vse povezave so onemogočene",
"AppointNewOwner": "Imenovali ste novega lastnika.",
"ArchiveAction": "Prazen arhiv",
@ -78,7 +77,6 @@
"FolderRemoved": "Mapa je premaknjena v koš",
"FolderRenamed": "Mapa '{{folderTitle}}' je preimenovana v '{{newFoldedTitle}}'",
"Forms": "Obrazci",
"FormsTemplates": "Predloge obrazcev",
"GeneralLinkDeletedSuccessfully": "Nova splošna povezava je bila uspešno ustvarjena",
"GoToMyRooms": "Pojdi na sobe",
"GoToPersonal": "Pojdi na Dokumenti",

View File

@ -0,0 +1 @@
{}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "WebDAV direktorij",
"FolderTitleYandex": "Yandex direktorij",
"FormTemplates": "Predloge obrazcev",
"LinkCopySuccess": "Povezava je bila kopirana v odložišče",
"LinkHasExpiredAndHasBeenDisabled": "Povezava je potekla in je onemogočena",
"LinkValidTime": "Ta povezava je veljavna le {{days_count}} dni.",
"NewForm": "PDF obrazec",

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "Можете додати нове чланове тима ручно или их позвати путем линка.",
"AddNewLink": "Додај нови линк",
"All": "Све",
"AllFiles": "Све датотеке",
"AllLinksAreDisabled": "Сви линкови су онемогућени",
"AppointNewOwner": "Поставили сте новог власника.",
"ArchiveAction": "Празна архива",
@ -78,7 +77,6 @@
"FolderRemoved": "Фолдер померен у Отпад",
"FolderRenamed": "Фолдер '{{folderTitle}}' је преименован у '{{newFoldedTitle}}'",
"Forms": "Обрасци",
"FormsTemplates": "Шаблони образаца",
"GeneralLinkDeletedSuccessfully": "Нови генерални линк успешно креиран",
"GoToMyRooms": "Иди у собе",
"GoToPersonal": "Иди у Документи",

View File

@ -0,0 +1 @@
{}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "WebDAV директоријум",
"FolderTitleYandex": "Yandex директоријум",
"FormTemplates": "Шаблони образаца",
"LinkCopySuccess": "Линк је копиран на привремену меморију",
"LinkHasExpiredAndHasBeenDisabled": "Линк је истекао и онемогућен је",
"LinkValidTime": "Овај линк је валидан само за {{days_count}} дана",
"NewForm": "PDF образац",

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "Možete dodati nove članove tima ručno ili ih pozvati putem linka.",
"AddNewLink": "Dodaj novi link",
"All": "Sve",
"AllFiles": "Sve datoteke",
"AllLinksAreDisabled": "Svi linkovi su onemogućeni",
"AppointNewOwner": "Postavili ste novog vlasnika.",
"ArchiveAction": "Prazna arhiva",
@ -78,7 +77,6 @@
"FolderRemoved": "Folder pomeren u Otpad",
"FolderRenamed": "Folder '{{folderTitle}}' je preimenovan u '{{newFoldedTitle}}'",
"Forms": "Obrasci",
"FormsTemplates": "Šabloni obrazaca",
"GeneralLinkDeletedSuccessfully": "Novi generalni link uspešno kreiran",
"GoToMyRooms": "Idi u sobe",
"GoToPersonal": "Idi u Dokumenti",

View File

@ -0,0 +1 @@
{}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "WebDAV direktorijum",
"FolderTitleYandex": "Yandex direktorijum",
"FormTemplates": "Šabloni obrazaca",
"LinkCopySuccess": "Link je kopiran na privremenu memoriju",
"LinkHasExpiredAndHasBeenDisabled": "Link je istekao i onemogućen je",
"LinkValidTime": "Ovaj link je validan samo za {{days_count}} dana",
"NewForm": "PDF obrazac",

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "Yeni ekip üyelerini manuel olarak ekleyebilir veya bağlantı yoluyla davet edebilirsiniz.",
"AddNewLink": "Yeni bağlantı ekle",
"All": "Hepsi",
"AllFiles": "Tüm Dosyalar",
"AllLinksAreDisabled": "Tüm bağlantılar devre dışı bırakıldı",
"AppointNewOwner": "Yeni bir sahip atadınız.",
"ArchiveAction": "Arşivi boşalt",
@ -78,7 +77,6 @@
"FolderRemoved": "Klasör Çöp kutusuna taşındı",
"FolderRenamed": "'{{folderTitle}}' isimli klasörün adı '{{newFoldedTitle}}' olarak değiştirildi",
"Forms": "Formlar",
"FormsTemplates": "Form şablonları",
"GeneralLinkDeletedSuccessfully": "Yeni genel bağlantı başarıyla oluşturuldu",
"GoToMyRooms": "Odalarıma git",
"GoToPersonal": "Belgelere Git",

View File

@ -0,0 +1 @@
{}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "WebDAV Dizini",
"FolderTitleYandex": "Yandex Dizini",
"FormTemplates": "Form şablonları",
"LinkCopySuccess": "Bağlantı panoya kopyalandı",
"LinkHasExpiredAndHasBeenDisabled": "Bağlantının süresi doldu ve devre dışı bırakıldı",
"LinkValidTime": "Bu bağlantı yalnızca {{days_count}} gün için geçerlidir.",
"NewForm": "PDF formu",

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "Ви можете додати нових учасників команди вручну або запросити їх за допомогою посилання.",
"AddNewLink": "Додати нове посилання",
"All": "Усі",
"AllFiles": "Усі файли",
"AllLinksAreDisabled": "Усі посилання вимкнено",
"AppointNewOwner": "Ви призначили нового власника.",
"ArchiveAction": "Очистити архів",
@ -78,7 +77,6 @@
"FolderRemoved": "Папку переміщено до кошика",
"FolderRenamed": "Папку \"{{folderTitle}}\" перейменовано на \"{{newFoldedTitle}}\"",
"Forms": "Форми",
"FormsTemplates": "Шаблони форм",
"GeneralLinkDeletedSuccessfully": "Нове загальне посилання успішно створено",
"GoToMyRooms": "Перейти до розділу «Кімнати»",
"GoToPersonal": "Перейти до розділу «Документи»",

View File

@ -0,0 +1 @@
{}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "Каталог WebDAV",
"FolderTitleYandex": "Каталог Yandex",
"FormTemplates": "Шаблони форми",
"LinkCopySuccess": "Посилання скопійовано до буферу обміну",
"LinkHasExpiredAndHasBeenDisabled": "Термін дії посилання закінчився, і його було вимкнено",
"LinkValidTime": "Це посилання дійсне лише протягом {{days_count}} дн.",
"NewForm": "Форма PDF",

View File

@ -3,7 +3,6 @@
"AddMembersDescription": "Bạn có thể thêm thành viên nhóm mới theo cách thủ công hoặc mời họ qua liên kết.",
"AddNewLink": "Thêm liên kết mới",
"All": "Tất cả",
"AllFiles": "Tất cả các tệp",
"AllLinksAreDisabled": "Tất cả các liên kết đã bị vô hiệu hóa",
"AppointNewOwner": "Bạn đã chỉ định chủ sở hữu mới.",
"ArchiveAction": "Kho sao lưu trống",
@ -78,7 +77,6 @@
"FolderRemoved": "Thư mục được chuyển vào Thùng rác",
"FolderRenamed": "Thư mục {{folderTitle}}, được đổi tên thành {{newFoldedTitle}}",
"Forms": "Các Biểu mẫu",
"FormsTemplates": "Mẫu biểu mẫu",
"GeneralLinkDeletedSuccessfully": "Đã tạo liên kết chung mới thành công",
"GoToMyRooms": "Vào Phòng của tôi",
"GoToPersonal": "Vào mục Tài liệu",

View File

@ -0,0 +1 @@
{}

View File

@ -21,7 +21,6 @@
"FolderTitleWebDav": "Thư mục WebDAV",
"FolderTitleYandex": "Thư mục Yandex",
"FormTemplates": "Mẫu biểu mẫu",
"LinkCopySuccess": "Liên kết đã được sao chép vào bộ nhớ tạm",
"LinkHasExpiredAndHasBeenDisabled": "Liên kết đã hết hạn và đã bị vô hiệu hóa",
"LinkValidTime": "Liên kết này chỉ có giá trị trong {{days_count}} ngày.",
"NewForm": "Mẫu PDF",

View File

@ -1,7 +1,14 @@
{
"AppointAdmin": "预约管理员",
"BackupPortal": " 备份{{productName}}数据",
"ChangeInstruction": " 要更改{{productName}}所有者,请在下面选择新所有者的姓名。",
"ChangeOwner": " 更改{{productName}}所有者",
"ChangeUser": "变更用户",
"DeactivateOrDeletePortal": " 停用或删除{{productName}}",
"DoTheSame": "与管理员进行相同操作",
"ManagePortal": " 管理{{productName}}配置",
"ManageUser": "管理用户账户",
"NewPortalOwner": " 新{{productName}}所有者",
"PortalOwnerCan": " {{productName}}所有者可以:",
"SetAccessRights": "设置访问权限"
}

Some files were not shown because too many files have changed in this diff Show More