Merge branch 'develop' into refactoring/global-colors

This commit is contained in:
Viktor Fomin 2024-07-24 15:04:46 +03:00
commit 165f57ea88
1023 changed files with 30728 additions and 19327 deletions

45
.vscode/tasks.json vendored
View File

@ -62,6 +62,21 @@
"close": false
}
},
{
"label": "Backend | build SAAS + dnsmasq + identity",
"command": "cd ${workspaceFolder}/../ ; ${command:python.interpreterPath} buildtools/build.backend.docker.py -s -d -i",
"type": "shell",
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"reveal": "always",
"panel": "new",
"focus": true,
"close": false
}
},
{
"label": "Backend | rebuild SAAS + dnsmasq",
"command": "cd ${workspaceFolder}/../ ; ${command:python.interpreterPath} buildtools/build.backend.docker.py -s -d -f",
@ -92,6 +107,36 @@
"close": false
}
},
{
"label": "Backend | build EE + identity",
"command": "cd ${workspaceFolder}/../ ; ${command:python.interpreterPath} buildtools/build.backend.docker.py -i",
"type": "shell",
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"reveal": "always",
"panel": "new",
"focus": true,
"close": false
}
},
{
"label": "Backend | build EE + dnsmasq + identity",
"command": "cd ${workspaceFolder}/../ ; ${command:python.interpreterPath} buildtools/build.backend.docker.py -d -i",
"type": "shell",
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"reveal": "always",
"panel": "new",
"focus": true,
"close": false
}
},
{
"label": "Backend | clear",
"command": "cd ${workspaceFolder}/../ ; ${command:python.interpreterPath} buildtools/clear.backend.docker.py",

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);
}
}
}
} */
}

View File

@ -67,6 +67,11 @@
"task": "Backend | build SAAS + dnsmasq",
"tooltip": "🛠️ Start the \"backend docker build SAAS + dnsmasq\" task",
},
{
"label": "Docker : Build-SAAS + dnsmasq + identity",
"task": "Backend | build SAAS + dnsmasq + identity",
"tooltip": "🛠️ Start the \"backend docker build SAAS + dnsmasq + identity\" task",
},
{
"label": "Docker : ReBuild-SAAS + dnsmasq",
"task": "Backend | rebuild SAAS + dnsmasq",
@ -77,6 +82,16 @@
"task": "Backend | build EE + dnsmasq",
"tooltip": "🛠️ Start the \"backend docker build EE + dnsmasq\" task",
},
{
"label": "Docker : Build-EE + identity",
"task": "Backend | build EE + identity",
"tooltip": "🛠️ Start the \"backend docker build EE + identity\" task",
},
{
"label": "Docker : Build-EE + dnsmasq + identity",
"task": "Backend | build EE + dnsmasq + identity",
"tooltip": "🛠️ Start the \"backend docker build EE + dnsmasq + identity\" task",
},
{
"label": "Docker : Clear",
"task": "Backend | clear",

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

@ -48,6 +48,7 @@
"@uiw/codemirror-theme-github": "^4.21.25",
"@uiw/react-codemirror": "^4.21.24",
"copy-to-clipboard": "^3.3.3",
"crypto-js": "^4.2.0",
"element-resize-detector": "^1.2.4",
"file-saver": "^2.0.5",
"firebase": "^10.8.0",
@ -73,7 +74,9 @@
"@babel/preset-react": "^7.18.6",
"@babel/preset-typescript": "^7.21.0",
"@svgr/webpack": "^5.5.0",
"@types/crypto-js": "^4.2.1",
"@types/eslint": "^8.44.7",
"@types/he": "^1.2.3",
"@typescript-eslint/eslint-plugin": "^6.12.0",
"@typescript-eslint/parser": "^6.12.0",
"babel-loader": "^8.3.0",

View File

@ -1,7 +1,4 @@
{
"Auto": "آلي",
"CodeCopySuccess": "تم نسخ الرمز إلى الحافظة",
"EmbedCode": "كود التضمين",
"Height": "الطول",
"Width": "العرض"
}

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

@ -1,31 +1,12 @@
{
"AccountsEmptyScreenText": "انظر تفاصيل المستخدمين هنا",
"Administration": "الإدارة",
"AndMoreLabel": "و <strong> {{count}} المزيد </ strong>",
"AndMoreLabel": "و <1> {{count}} المزيد </ 1>",
"CreationDate": "تاريخ الإنشاء",
"Data": "بيانات",
"DateModified": "تم تعديل التاريخ",
"ExpectUsers": "مستخدمين متوقعين",
"FeedCreateFileSeveral": "تمت إضافة الملفات",
"FeedCreateFileSingle": "تم إنشاء الملف",
"FeedCreateFolderSeveral": "تم إضافة المجلدات",
"FeedCreateFolderSingle": "تم إنشاء المجلد",
"FeedCreateRoom": "<strong>«{{roomTitle}}»</strong> تم إنشاء غرفة ",
"FeedCreateRoomTag": "تمت إضافة الإشارات",
"FeedCreateUser": "تمت إضافة المستخدمين",
"FeedDeleteFile": "تم حذف الملفات",
"FeedDeleteFolder": "تم حذف المجلدات",
"FeedDeleteRoomTag": "تم حذف الإشارات",
"FeedDeleteUser": "تم حذف المستخدم",
"FeedLocationLabel": "المجلد «{{folderTitle}}»",
"FeedMoveFile": "تم نقل الملفات",
"FeedMoveFolder": "تم نقل المجلدات",
"FeedRenameFile": "تم إعادة تسمية الملف",
"FeedRenameFolder": "تم إعادة تسمية المجلد",
"FeedRenameRoom": "تمت إعادة تسمية الغرفة <strong> «{{oldRoomTitle}}» </strong> إلى <strong> «{{roomTitle}}» </strong>.",
"FeedUpdateFile": "تم تحديث الملف",
"FeedUpdateRoom": "تم تغيير الأيقونة",
"FeedUpdateUser": "تم تعيين الدور {{role}}",
"FileExtension": "امتداد الملف",
"FilesEmptyScreenText": "انظر تفاصيل الملف والمجلد هنا",
"GalleryEmptyScreenText": "راجع تفاصيل قالب النموذج هنا",

View File

@ -3,7 +3,6 @@
"AddManuallyDescriptionAccounts": "قم بدعوة المستخدمين الجدد إلى {{productName}} شخصيًا عبر البريد الإلكتروني",
"AddManuallyDescriptionRoom": "أضف مستخدمي {{productName}} الحاليين إلى الغرفة باستخدام الأسماء أو قم بدعوة مستخدمين جدد شخصيًا عبر البريد الإلكتروني",
"EmailErrorMessage": "عنوان البريد الإلكتروني غير صالح. يمكنك تحرير البريد الإلكتروني بالضغط عليه.",
"GroupMaxAvailableRoleWarning": "تتمتع المجموعات بأقصى دور متاح - \"{{role}}\". يمكنك إصدار زيادة في الحقوق بعد إضافة مجموعة إلى الغرفة.",
"InvitationLanguage": "لغة الدعوة",
"InviteAccountSearchPlaceholder": "ادعُ الناس بالبريد الإلكتروني",
"InviteRoomSearchPlaceholder": "ادعُ الناس بالاسم أو بالبريد الإلكتروني",

View File

@ -146,7 +146,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "إعدادات اللغة والمنطقة الزمنية هي طريقة لتغير لغة البوابة بأكملها لجميع مستخدمين البوابة ولتهيئة المنطقة الزمنية حيث يمكنهم متابعة أحداث البوابة المعروضة بالوقت والتاريخ الصحيح.",
"LastUpdate": "اخر تحديث: {{date}}",
"LicenseLimitCounter": "حد الترخيص للمدراء/المستخدمين ذوي الصلاحيات:",
"LicenseLimitDescription": "يتكون عداد حد الترخيص من: الحسابات الموجودة بالفعل في {{productName}} والمستخدمين الجدد الذين تريد استيرادهم. إذا قمت باستيراد مستخدمين لديهم حساب {{productName}} بالفعل، فلن يتم احتسابهم مرة أخرى في العداد. يسمح لك ترخيص {{productName}} الخاص بك بالحصول على 100 مستخدم كحد أقصى.",
"LicenseLimitDescription": "يتكون عداد حد الترخيص من: الحسابات الموجودة بالفعل في {{productName}} والمستخدمين الجدد الذين تريد استيرادهم. إذا قمت باستيراد مستخدمين لديهم حساب {{productName}} بالفعل، فلن يتم احتسابهم مرة أخرى في العداد. يسمح لك ترخيص {{productName}} الخاص بك بالحصول على {{maxLimit}} مستخدم كحد أقصى.",
"Lifetime": "الوقت المتبقي (دقيقة)",
"LimitThemesTooltip": "يمكنك فقط إنشاء 3 قوالب مخصصة. لإنشاء واحدة جديدة ، يجب عليك حذف أحد القوالب السابقة.",
"LocalFile": "ملف محلي",

View File

@ -3,6 +3,5 @@
"FormFilling": "تعبئة النموذج",
"LinkName": "اسم الرابط",
"ShareEmailBody": "لقد تم منحك حق الوصول إلى المستند {{itemName}}. انقر فوق الرابط أدناه لفتح المستند الآن: {{shareLink}}.",
"ShareEmailSubject": "لقد تم منحك حق الوصول إلى المستند {{itemName}}",
"SharingSettingsTitle": "إعدادات المشاركة"
"ShareEmailSubject": "لقد تم منحك حق الوصول إلى المستند {{itemName}}"
}

View File

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

View File

@ -1,7 +1,4 @@
{
"Auto": "Avto",
"CodeCopySuccess": "Kod buferə köçürüldü",
"EmbedCode": "Kodu yerləşdirin",
"Height": "Uzunluq",
"Width": "Genişlik"
}

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

@ -1,31 +1,12 @@
{
"AccountsEmptyScreenText": "İstifadəçi detallarına burada baxın",
"Administration": "İdarəetmə",
"AndMoreLabel": "və <strong>{{count}} daha çox</strong>",
"AndMoreLabel": "və <1>{{count}} daha çox</1>",
"CreationDate": "Yaradılma tarixi",
"Data": "Məlumat",
"DateModified": "Değiştirilme tarihi",
"ExpectUsers": "İstifadəçiləri gözləyin",
"FeedCreateFileSeveral": "Fayllar əlavə edildi",
"FeedCreateFileSingle": "Fayl yaradıldı",
"FeedCreateFolderSeveral": "Qovluqlar əlavə edildi",
"FeedCreateFolderSingle": "Qovluq yaradıldı",
"FeedCreateRoom": "<strong>«{{roomTitle}}»</strong> otaq yaradıldı",
"FeedCreateRoomTag": "Teqlər əlavə edildi",
"FeedCreateUser": "İstifadəçilər əlavə edildi",
"FeedDeleteFile": "Fayllar silindi",
"FeedDeleteFolder": "Qovluqlar silindi",
"FeedDeleteRoomTag": "Teqlər silindi",
"FeedDeleteUser": "İstifadəçi silindi",
"FeedLocationLabel": "Qovluq «{{folderTitle}}»",
"FeedMoveFile": "Fayllar köçürüldü",
"FeedMoveFolder": "Qovluqlar köçürüldü",
"FeedRenameFile": "Faylın adı dəyişdirildi",
"FeedRenameFolder": "Qovluğun adı dəyişdirildi",
"FeedRenameRoom": "<strong>{{oldRoomTitle}}»</strong> olan otağın adı <strong>«{{roomTitle}}»</strong> olaraq dəyişdirildi.",
"FeedUpdateFile": "Fayl yeniləndi",
"FeedUpdateRoom": "Simvol dəyişdirildi",
"FeedUpdateUser": "{{role}} rolu təyin edildi",
"FileExtension": "Fayl uzantısı",
"FilesEmptyScreenText": "Fayl və qovluq detallarına burada baxın",
"GalleryEmptyScreenText": "Forma şablonunun təfərrüatlarına burada baxın",

View File

@ -3,7 +3,6 @@
"AddManuallyDescriptionAccounts": "Yeni istifadəçiləri e-poçt vasitəsilə şəxsən {{productName}}-ə dəvət edin",
"AddManuallyDescriptionRoom": "Mövcud {{productName}} istifadəçilərini adlardan istifadə edərək otağa əlavə edin və ya yeni istifadəçiləri e-poçt vasitəsilə şəxsən dəvət edin",
"EmailErrorMessage": "E-poçt ünvanı etibarlı deyil. Siz e-poçtu klikləməklə redaktə edə bilərsiniz.",
"GroupMaxAvailableRoleWarning": "Qruplar maksimum mümkün rola malikdir: “{{role}}”. Otağa qrup əlavə etdikdən sonra hüquqları artıra bilərsiniz.",
"InvitationLanguage": "Dəvət dili",
"InviteAccountSearchPlaceholder": "İnsanları e-məktubla dəvət edin",
"InviteRoomSearchPlaceholder": "İnsanları ad və ya e-məktubla dəvət edin",

View File

@ -146,7 +146,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Dil və Saat qurşağı Parametrləri bütün portal istifadəçiləri üçün bütün portalın dilini dəyişmək və portaldakı bütün hadisələrin düzgün tarix və vaxtla göstərilməsi üçün saat qurşağını konfiqurasiya etmək üsuludur.",
"LastUpdate": "Son yeniləmə: {{date}}",
"LicenseLimitCounter": "Lisenziya limiti Administratorlar/Güc:",
"LicenseLimitDescription": "Lisenziya limiti sayğacı aşağıdakılardan ibarətdir: {{productName}}-də mövcud hesablar və idxal etmək istədiyiniz yeni istifadəçilər. Artıq {{productName}} hesabı olan istifadəçiləri idxal etsəniz, onlar bir daha sayğacda sayılmayacaqlar. {{productName}} lisenziyanız maksimum 100 istifadəçinin mövcud olmasına imkan verir.",
"LicenseLimitDescription": "Lisenziya limiti sayğacı aşağıdakılardan ibarətdir: {{productName}}-də mövcud hesablar və idxal etmək istədiyiniz yeni istifadəçilər. Artıq {{productName}} hesabı olan istifadəçiləri idxal etsəniz, onlar bir daha sayğacda sayılmayacaqlar. {{productName}} lisenziyanız maksimum {{maxLimit}} istifadəçinin mövcud olmasına imkan verir.",
"Lifetime": "Ömürlük (dəq)",
"LimitThemesTooltip": "Siz yalnız 3 fərdi mövzu yarada bilərsiniz. Yenisini yaratmaq üçün əvvəlki mövzulardan birini silməlisiniz.",
"LocalFile": "Yerli fayl",

View File

@ -3,6 +3,5 @@
"FormFilling": "Formanın doldurulması",
"LinkName": "Keçid adı",
"ShareEmailBody": "Sizə {{itemName}} sənədinə giriş icazəsi verildi. Sənədi hazırda açmaq üçün aşağıdakı linki klikləyin: {{shareLink}}.",
"ShareEmailSubject": "Sizə {{itemName}} sənədinə giriş icazəsi verildi ",
"SharingSettingsTitle": "Paylaşma sazlamaları"
"ShareEmailSubject": "Sizə {{itemName}} sənədinə giriş icazəsi verildi "
}

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

@ -1,7 +1,4 @@
{
"Auto": "Автоматично",
"CodeCopySuccess": "Кодът бе копиран в клипборда",
"EmbedCode": "Код за вграждане",
"Height": "Височина",
"Width": "Ширина"
}

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

@ -1,31 +1,12 @@
{
"AccountsEmptyScreenText": "Вижте подробности за потребителите тук",
"Administration": "Администрация",
"AndMoreLabel": "и <strong>още {{count}}</strong>",
"AndMoreLabel": "и <1>още {{count}}</1>",
"CreationDate": "Дата на създаване",
"Data": "Данни",
"DateModified": "Дата на промяна",
"ExpectUsers": "Очаквай потребители",
"FeedCreateFileSeveral": "Добавени файлове",
"FeedCreateFileSingle": "Файлът е създаден",
"FeedCreateFolderSeveral": "Папките са добавени",
"FeedCreateFolderSingle": "Папката е създадена",
"FeedCreateRoom": "<strong>«{{roomTitle}}»</strong> стаята е създадена",
"FeedCreateRoomTag": "Таговете са добавени",
"FeedCreateUser": "Добавени потребители",
"FeedDeleteFile": "Премахнати файлове",
"FeedDeleteFolder": "Папките са премахнати",
"FeedDeleteRoomTag": "Таговете са премахнати",
"FeedDeleteUser": "Потребителят е премахнат",
"FeedLocationLabel": "Папка «{{folderTitle}}»",
"FeedMoveFile": "Преместени файлове",
"FeedMoveFolder": "Папките са преместени",
"FeedRenameFile": "Файлът е преименуван",
"FeedRenameFolder": "Папката е преименувана",
"FeedRenameRoom": "Стаята <strong>«{{oldRoomTitle}}»</strong> е преименувана на <strong>«{{roomTitle}}»</strong>.",
"FeedUpdateFile": "Файлът е актуализиран",
"FeedUpdateRoom": "Иконата е променена",
"FeedUpdateUser": "е назначена ролята {{role}}",
"FileExtension": "Разширение на файл",
"FilesEmptyScreenText": "Вижте подробности за файловете и папките тук",
"GalleryEmptyScreenText": "Виж подробности за шаблон на формуляр тук",

View File

@ -3,7 +3,6 @@
"AddManuallyDescriptionAccounts": "Поканете нови потребители в {{productName}} лично чрез имейл",
"AddManuallyDescriptionRoom": "Добавете съществуващи {{productName}} потребители към стаята, като използвате имената или поканете нови потребители лично чрез имейл",
"EmailErrorMessage": "Невалиден имейл адрес. Можете да редактирате имейла, като щракнете върху него.",
"GroupMaxAvailableRoleWarning": "Групите имат максималната налична роля - “{{role}}”. Можете да издадете увеличение на правата след добавяне на група в стаята.",
"InvitationLanguage": "Език на поканата",
"InviteAccountSearchPlaceholder": "Поканете хора по имейл",
"InviteRoomSearchPlaceholder": "Поканете хора по име или имейл",

View File

@ -147,7 +147,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Настройките за Език и Часова зона са начин за промяна на езика на целия портал за всички потребители на портала и за конфигуриране на часовата зона, така че всички събития на портала да се показват с правилните дата и час.",
"LastUpdate": "Последна актуализация: {{date}}",
"LicenseLimitCounter": "Ограничение на лиценза Администратори/Мощност:",
"LicenseLimitDescription": "Броячът за ограничение на лиценза се състои от: вече съществуващи профили в {{productName}} и нови потребители, които искате да входирате. Ако входирате потребители, които вече имат профил в {{productName}}, те няма да бъдат преброени отново в брояча. Вашият лиценз за {{productName}} ви позволява да имате максимум 100 потребителя.",
"LicenseLimitDescription": "Броячът за ограничение на лиценза се състои от: вече съществуващи профили в {{productName}} и нови потребители, които искате да входирате. Ако входирате потребители, които вече имат профил в {{productName}}, те няма да бъдат преброени отново в брояча. Вашият лиценз за {{productName}} ви позволява да имате максимум {{maxLimit}} потребителя.",
"Lifetime": "Живот (мин.)",
"LimitThemesTooltip": "Можете да създадете само 3 персонализирани теми. За да създадете нова, трябва да изтриете една от предишните теми.",
"LocalFile": "Локален файл",

View File

@ -3,6 +3,5 @@
"FormFilling": "Попълване на формуляр",
"LinkName": "Име на линка",
"ShareEmailBody": "Даден Ви е достъп до документ {{itemName}}. Кликнете върху връзката долу, за да отворите документа сега: {{shareLink}}.",
"ShareEmailSubject": "Даден Ви е достъп до документ {{itemName}}",
"SharingSettingsTitle": "Настройки за споделяне"
"ShareEmailSubject": "Даден Ви е достъп до документ {{itemName}}"
}

View File

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

View File

@ -1,7 +1,4 @@
{
"Auto": "Automaticky",
"CodeCopySuccess": "Kód byl zkopírován do schránky",
"EmbedCode": "Vložit kód",
"Height": "Výška",
"Width": "Šířka"
}

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

@ -1,31 +1,12 @@
{
"AccountsEmptyScreenText": "Podrobnosti o uživatelích naleznete zde",
"Administration": "Správa",
"AndMoreLabel": "a <strong>{{count}} další</strong>",
"AndMoreLabel": "a <1>{{count}} další</1>",
"CreationDate": "Datum vytvoření",
"Data": "Data",
"DateModified": "Datum úpravy",
"ExpectUsers": "Očekávejte, že uživatelé",
"FeedCreateFileSeveral": "Přidané soubory",
"FeedCreateFileSingle": "Vytvořený soubor",
"FeedCreateFolderSeveral": "Složky přidány",
"FeedCreateFolderSingle": "Složka vytvořena",
"FeedCreateRoom": "Vytvořena místnost <strong>«{{roomTitle}}»</strong>",
"FeedCreateRoomTag": "Přidány štítky",
"FeedCreateUser": "Přidáno uživatelů",
"FeedDeleteFile": "Soubory byly odstraněny",
"FeedDeleteFolder": "Složky odstraněny",
"FeedDeleteRoomTag": "Odstraněny štítky",
"FeedDeleteUser": "Uživatel odstraněn",
"FeedLocationLabel": "Složka «{{folderTitle}}»",
"FeedMoveFile": "Soubory byly přesunuty",
"FeedMoveFolder": "Složky přesunuty",
"FeedRenameFile": "Přejmenování souboru",
"FeedRenameFolder": "Složka přejmenována",
"FeedRenameRoom": "Místnost <strong>«{{oldRoomTitle}}»</strong> přejmenována na <strong>«{{roomTitle}}»</strong>.",
"FeedUpdateFile": "Soubor aktualizován",
"FeedUpdateRoom": "Ikona se změnila",
"FeedUpdateUser": "byla přidělena role {{role}}",
"FileExtension": "Přípona souboru",
"FilesEmptyScreenText": "Podrobnosti o souboru a složce naleznete zde",
"GalleryEmptyScreenText": "Podrobnosti o šabloně formuláře naleznete zde",

View File

@ -3,7 +3,6 @@
"AddManuallyDescriptionAccounts": "Pozvěte osobně nové uživatele do {{productName}} prostřednictvím e-mailu",
"AddManuallyDescriptionRoom": "Přidat stávající uživatele {{productName}} do místnosti pomocí jmen nebo osobní pozvání nových uživatelů prostřednictvím e-mailu",
"EmailErrorMessage": "E-mailová adresa není platná. E-mailovou adresu můžete upravit kliknutím na tuto adresu.",
"GroupMaxAvailableRoleWarning": "Skupiny mají maximální dostupnou roli - “{{role}}”. Po přidání skupiny do místnosti můžete vydat zvýšení práv.",
"InvitationLanguage": "Jazyk pozvánky",
"InviteAccountSearchPlaceholder": "Pozvat lidi e-mailem",
"InviteRoomSearchPlaceholder": "Pozvat lidi podle jména nebo e-mailu",

View File

@ -147,7 +147,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Nastavení jazyka a časového pásma umožňuje změnit jazyk celého portálu pro všechny uživatele portálu a nakonfigurovat časové pásmo tak, aby se všechny události portálu zobrazovaly se správným datem a časem.",
"LastUpdate": "Poslední aktualizace: {{date}}",
"LicenseLimitCounter": "Omezení licence Administrátoři/možnosti:",
"LicenseLimitDescription": "Počítadlo licenčních limitů se skládá z: již existujících účtů v {{productName}} a nových uživatelů, které chcete importovat. Pokud importujete uživatele, kteří již účet v {{productName}} mají, nebudou do počítadla znovu započítáni. Vaše licence {{productName}} vám umožňuje mít maximálně 100 uživatelů.",
"LicenseLimitDescription": "Počítadlo licenčních limitů se skládá z: již existujících účtů v {{productName}} a nových uživatelů, které chcete importovat. Pokud importujete uživatele, kteří již účet v {{productName}} mají, nebudou do počítadla znovu započítáni. Vaše licence {{productName}} vám umožňuje mít maximálně {{maxLimit}} uživatelů.",
"Lifetime": "Životnost (min)",
"LimitThemesTooltip": "Můžete vytvořit pouze 3 vlastní motivy. Chcete-li vytvořit nové, musíte odstranit jedno z předchozích témat.",
"LocalFile": "Místní soubor",

View File

@ -3,6 +3,5 @@
"FormFilling": "Vyplňování formuláře",
"LinkName": "Název odkazu",
"ShareEmailBody": "Byl vám udělen přístup k dokumentu {{itemName}}. Kliknutím na níže uvedený odkaz dokument právě teď otevřete: {{shareLink}}.",
"ShareEmailSubject": "Byl vám udělen přístup k dokumentu {{itemName}}",
"SharingSettingsTitle": "Nastavení sdílení"
"ShareEmailSubject": "Byl vám udělen přístup k dokumentu {{itemName}}"
}

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

@ -1,7 +1,4 @@
{
"Auto": "auto",
"CodeCopySuccess": "Der Code wurde in die Zwischenablage kopiert.",
"EmbedCode": "Code einbetten",
"Height": "Höhe",
"Width": "Breite"
}

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

@ -1,31 +1,12 @@
{
"AccountsEmptyScreenText": "Siehe Benutzerdetails hier",
"Administration": "Verwaltung",
"AndMoreLabel": "und <strong>{{count}} mehr</strong>",
"AndMoreLabel": "und <1>{{count}} mehr</1>",
"CreationDate": "Erstellungsdatum",
"Data": "Daten",
"DateModified": "Änderungsdatum",
"ExpectUsers": "Eingeladene Benutzer",
"FeedCreateFileSeveral": "Dateien hinzugefügt",
"FeedCreateFileSingle": "Datei erstellt",
"FeedCreateFolderSeveral": "Ordner hinzugefügt",
"FeedCreateFolderSingle": "Ordner erstellt",
"FeedCreateRoom": "<strong>«{{roomTitle}}»</strong> Raum erstellt",
"FeedCreateRoomTag": "Tags hinzugefügt",
"FeedCreateUser": "Benutzer hinzugefügt",
"FeedDeleteFile": "Dateien entfernt",
"FeedDeleteFolder": "Ordner entfernt",
"FeedDeleteRoomTag": "Tags entfernt",
"FeedDeleteUser": "Benutzer entfernt",
"FeedLocationLabel": "Ordner «{{folderTitle}}»",
"FeedMoveFile": "Dateien verschoben",
"FeedMoveFolder": "Ordner verschoben",
"FeedRenameFile": "Datei umbenannt",
"FeedRenameFolder": "Ordner umbenannt",
"FeedRenameRoom": "Raum <strong>«{{oldRoomTitle}}»</strong> umbenannt in <strong>«{{roomTitle}}»</strong>.",
"FeedUpdateFile": "Datei aktualisiert",
"FeedUpdateRoom": "Icon geändert",
"FeedUpdateUser": "hat jetzt die Rolle {{role}}",
"FileExtension": "Dateierweiterung",
"FilesEmptyScreenText": "Finden Sie Details zur Datei und zum Ordner hier",
"GalleryEmptyScreenText": "Sehen Sie die Details der Formularvorlage hier",

View File

@ -3,7 +3,6 @@
"AddManuallyDescriptionAccounts": "Laden Sie neue Benutzer persönlich per E-Mail zu {{productName}} ein",
"AddManuallyDescriptionRoom": "Fügen Sie bestehende {{productName}}-Benutzer anhand der Namen zum Raum hinzu oder laden Sie neue Benutzer persönlich per E-Mail ein",
"EmailErrorMessage": "Die E-Mail-Adresse ist nicht gültig. Sie können die E-Mail bearbeiten, indem Sie sie anklicken.",
"GroupMaxAvailableRoleWarning": "Gruppen haben die maximal verfügbare Rolle „{{role}}“. Nach dem Hinzufügen einer Gruppe zum Raum können Sie eine Rechteerhöhung erteilen.",
"InvitationLanguage": "Sprache der Einladung",
"InviteAccountSearchPlaceholder": "Personen per E-Mail einladen",
"InviteRoomSearchPlaceholder": "Personen per Name oder E-Mail einladen",

View File

@ -145,7 +145,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Sprache- und Zeitzoneneinstellungen ist eine Möglichkeit, die Sprache des gesamten Portals für alle Portalbenutzer zu ändern und die Zeitzone so zu konfigurieren, dass alle Ereignisse des Portals mit dem richtigen Datum und der richtigen Zeit angezeigt werden.",
"LastUpdate": "Letzte Aktualisierung: {{date}}",
"LicenseLimitCounter": "Lizenzbeschränkung Administratoren/Powerusers:",
"LicenseLimitDescription": "Der Lizenzlimitzähler besteht aus: bereits vorhandenen Konten in {{productName}} und neuen Benutzern, die Sie importieren möchten. Wenn Sie Benutzer importieren, die bereits über ein {{productName}}-Konto verfügen, werden diese im Zähler nicht erneut gezählt. Mit Ihrer {{productName}}-Lizenz können Sie maximal 100 Benutzer haben.",
"LicenseLimitDescription": "Der Lizenzlimitzähler besteht aus: bereits vorhandenen Konten in {{productName}} und neuen Benutzern, die Sie importieren möchten. Wenn Sie Benutzer importieren, die bereits über ein {{productName}}-Konto verfügen, werden diese im Zähler nicht erneut gezählt. Mit Ihrer {{productName}}-Lizenz können Sie maximal {{maxLimit}} Benutzer haben.",
"Lifetime": "Lebenszeit (min)",
"LimitThemesTooltip": "Sie können nur 3 benutzerdefinierte Themen erstellen. Um ein neues Thema zu erstellen, müssen Sie eines der vorherigen Themen löschen.",
"LocalFile": "Lokale Datei",

View File

@ -3,6 +3,5 @@
"FormFilling": "Ausfüllen von Formularen",
"LinkName": "Linkname",
"ShareEmailBody": "Ihnen wurde Zugriff auf das Dokument {{itemName}} erteilt. Zum Öffnen klicken Sie auf den Link: {{shareLink}}.",
"ShareEmailSubject": "Ihnen wurde Zugriff auf das Dokument {{itemName}} erteilt",
"SharingSettingsTitle": "Freigabeeinstellungen"
"ShareEmailSubject": "Ihnen wurde Zugriff auf das Dokument {{itemName}} erteilt"
}

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

@ -1,7 +1,4 @@
{
"Auto": "Αυτόματα",
"CodeCopySuccess": "Ο κωδικός έχει αντιγραφεί στο πρόχειρο",
"EmbedCode": "Ο κωδικός έχει αντιγραφεί στο πρόχειρο",
"Height": "Ύψος",
"Width": "Πλάτος"
}

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

@ -1,31 +1,12 @@
{
"AccountsEmptyScreenText": "Δείτε λεπτομέρειες για τους χρήστες εδώ",
"Administration": "Διαχείριση",
"AndMoreLabel": "και <strong>{{count}} περισσότερα</strong>",
"AndMoreLabel": "και <1>{{count}} περισσότερα</1>",
"CreationDate": "Ημερομηνία δημιουργίας",
"Data": "Δεδομένα",
"DateModified": "Ημερομηνία τροποποίησης",
"ExpectUsers": "Αναμονή χρηστών",
"FeedCreateFileSeveral": "Προσθήκη αρχείων",
"FeedCreateFileSingle": "Το αρχείο δημιουργήθηκε",
"FeedCreateFolderSeveral": "Ο φάκελος προστέθηκε",
"FeedCreateFolderSingle": "Ο φάκελος δημιουργήθηκε",
"FeedCreateRoom": "δημιουργήθηκε το δωμάτιο <strong>«{{roomTitle}}»</strong>",
"FeedCreateRoomTag": "Οι ετικέτες προστέθηκαν",
"FeedCreateUser": "Οι χρήστες προστέθηκαν",
"FeedDeleteFile": "Τα αρχεία αφαιρέθηκαν",
"FeedDeleteFolder": "Οι φάκελοι διαγράφηκαν",
"FeedDeleteRoomTag": "Οι ετικέτες αφαιρέθηκαν",
"FeedDeleteUser": "Ο χρήστης έχει αφαιρεθεί",
"FeedLocationLabel": "Φάκελος «{{folderTitle}}»",
"FeedMoveFile": "Τα αρχεία μετακινήθηκαν",
"FeedMoveFolder": "Οι φάκελοι μετακινήθηκαν",
"FeedRenameFile": "Το αρχείο μετονομάστηκε",
"FeedRenameFolder": "Ο φάκελος μετονομάστηκε",
"FeedRenameRoom": "Το δωμάτιο <strong>«{{oldRoomTitle}}»</strong> μετονομάστηκε σε <strong>«{{roomTitle}}»</strong>.",
"FeedUpdateFile": "Το αρχείο ενημερώθηκε",
"FeedUpdateRoom": "Το εικονίδιο άλλαξε",
"FeedUpdateUser": "έχει εκχωρηθεί ο ρόλος {{role}}",
"FileExtension": "Επέκταση αρχείου",
"FilesEmptyScreenText": "Δείτε εδώ λεπτομέρειες αρχείου και φακέλου",
"GalleryEmptyScreenText": "Δείτε τις λεπτομέρειες του προτύπου φόρμας εδώ",

View File

@ -3,7 +3,6 @@
"AddManuallyDescriptionAccounts": "Προσκαλέστε νέους χρήστες στο {{productName}} προσωπικά μέσω email",
"AddManuallyDescriptionRoom": "Προσθέστε υπάρχοντες χρήστες του {{productName}} στο δωμάτιο χρησιμοποιώντας τα ονόματα ή προσκαλέστε νέους χρήστες προσωπικά μέσω email",
"EmailErrorMessage": "Η διεύθυνση email δεν είναι έγκυρη. Μπορείτε να επεξεργαστείτε το email κάνοντας κλικ πάνω του.",
"GroupMaxAvailableRoleWarning": "Οι ομάδες έχουν τον μέγιστο διαθέσιμο ρόλο «{{role}}». Μπορείτε να εκδώσετε αύξηση των δικαιωμάτων μετά την προσθήκη μιας ομάδας στο δωμάτιο.",
"InvitationLanguage": "Γλώσσα πρόσκλησης",
"InviteAccountSearchPlaceholder": "Πρόσκληση ατόμων μέσω email",
"InviteRoomSearchPlaceholder": "Πρόσκληση ατόμων με όνομα ή email",

View File

@ -145,7 +145,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Οι Ρυθμίσεις γλώσσας και ζώνης ώρας είναι ένας τρόπος για να αλλάξετε τη γλώσσα ολόκληρης της πύλης για όλους τους χρήστες της πύλης και να ρυθμίσετε τη ζώνη ώρας, ώστε όλα τα συμβάντα της πύλης να εμφανίζονται με τη σωστή ημερομηνία και ώρα.",
"LastUpdate": "Τελευταία ενημέρωση: {{date}}",
"LicenseLimitCounter": "Όριο άδειας χρήσης Διαχειριστές/Ισχύς:",
"LicenseLimitDescription": "Ο μετρητής του ορίου αδειών χρήσης αποτελείται από: τους ήδη υπάρχοντες λογαριασμούς στο {{productName}} και τους νέους χρήστες που θέλετε να εισαγάγετε. Εάν εισαγάγετε χρήστες που έχουν ήδη λογαριασμό στο {{productName}}, δεν θα υπολογίζονται ξανά στον μετρητή. Η άδεια χρήσης του {{productName}} σάς επιτρέπει να έχετε το πολύ 100 χρήστες.",
"LicenseLimitDescription": "Ο μετρητής του ορίου αδειών χρήσης αποτελείται από: τους ήδη υπάρχοντες λογαριασμούς στο {{productName}} και τους νέους χρήστες που θέλετε να εισαγάγετε. Εάν εισαγάγετε χρήστες που έχουν ήδη λογαριασμό στο {{productName}}, δεν θα υπολογίζονται ξανά στον μετρητή. Η άδεια χρήσης του {{productName}} σάς επιτρέπει να έχετε το πολύ {{maxLimit}} χρήστες.",
"Lifetime": "Διάρκεια ζωής (λεπτά)",
"LimitThemesTooltip": "Μπορείτε να δημιουργήσετε μόνο 3 προσαρμοσμένα θέματα. Για να δημιουργήσετε ένα νέο, πρέπει να διαγράψετε ένα από τα προηγούμενα θέματα.",
"LocalFile": "Τοπικό αρχείο",

View File

@ -3,6 +3,5 @@
"FormFilling": "Συμπλήρωση εντύπων",
"LinkName": "Όνομα συνδέσμου",
"ShareEmailBody": "Σας έχει χορηγηθεί πρόσβαση στο έγγραφο {{itemName}}. Κάντε κλικ στον παρακάτω σύνδεσμο για να ανοίξετε το έγγραφο τώρα: {{shareLink}}.",
"ShareEmailSubject": "Σας έχει χορηγηθεί πρόσβαση στο έγγραφο {{itemName}}",
"SharingSettingsTitle": "Ρυθμίσεις κοινής χρήσης"
"ShareEmailSubject": "Σας έχει χορηγηθεί πρόσβαση στο έγγραφο {{itemName}}"
}

View File

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

View File

@ -1,14 +1,11 @@
{
"Auto": "Auto",
"CodeCopySuccess": "Code has been copied to the clipboard",
"EmbedCode": "Embed code",
"Height": "Height",
"Width": "Width",
"Link": "Link",
"DisplaySettings": "Display settings",
"CodeSuccessfullyCopied": "Code to insert successfully copied to clipboard",
"LinkProtectedWithPassword": "The link is protected with a password.",
"ContentRestricted": "Content copying, file downloading and printing are restricted.",
"EmbeddingBarDescription": "Embedding will only work for the URLs specified by the DocSpace admin in the JavaScript SDK settings.",
"EmbeddingBarAllowList": "Add the website URL for embedding to the <1>allow list</1>."
"DisplaySettings": "Display settings",
"EmbeddingBarAllowList": "Add the website URL for embedding to the <1>allow list</1>.",
"EmbeddingBarDescription": "Embedding will only work for the URLs specified by the {{productName}} admin in the JavaScript SDK settings.",
"Height": "Height",
"Link": "Link",
"LinkProtectedWithPassword": "The link is protected with a password.",
"Width": "Width"
}

View File

@ -21,6 +21,5 @@
"UploadFromPortalDescription": "Upload any type files from Documents or Rooms",
"UploadFromPortalTitle": "Upload from {{productName}}",
"UploadPDFFormOptionDescription": "Select a ready PDF form available in {{productName}} and upload it to the room.",
"UserEmptyDescription": "Files and folders uploaded by admins will appeared here.",
"UserEmptyTitle": "No docs here yet"
"UserEmptyDescription": "Files and folders uploaded by admins will appeared here."
}

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",
@ -49,6 +48,7 @@
"EditLink": "Edit link",
"EditRoom": "Edit room",
"EditSharedLink": "Edit shared link",
"Embed": "Embed",
"EmbeddingSettings": "Embedding settings",
"EmptyFile": "Empty file",
"EmptyFilterSubheadingText": "No files to be displayed for this filter here",
@ -79,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",
@ -129,6 +128,7 @@
"PrivateRoomDescriptionUnbreakable": "Unbreakable AES-256 algorithm.",
"PrivateRoomHeader": "Welcome to {{organizationName}} private room where every symbol you type is encrypted",
"PrivateRoomSupport": "Work in Private Room is available via {{organizationName}} desktop app. <3>Instructions</3>",
"Protected": "protected",
"RecentlyAccessible": "Recently accessible via link",
"RecentViaLinkEmptyContainerDescription": "Here you will find a list of the recently opened files shared with you via an external link.",
"RemovedFromFavorites": "Removed from favorites",
@ -147,6 +147,7 @@
"RoomOwner": "Room owner",
"RoomPinned": "Room pinned",
"RoomRemoved": "Room removed",
"RoomsPinLimitMessage": "You can't pin more than 10 rooms to the top. Unpin some that are currently pinned.",
"RoomsPinned": "Rooms pinned: {{count}}",
"RoomsRemoved": "Rooms removed",
"RoomsUnpinned": "Rooms unpinned: {{count}}",
@ -180,7 +181,5 @@
"WantToRestoreTheRoom": "All shared links in this room will become active, and its contents will be available to everyone with the link. Do you want to restore the room?",
"WantToRestoreTheRooms": "All shared links in restored rooms will become active, and their contents will be available to everyone with the room links. Do you want to restore the rooms?",
"WithSubfolders": "With subfolders",
"YouLeftTheRoom": "You have left the room",
"Protected": "protected",
"Embed": "Embed"
"YouLeftTheRoom": "You have left the room"
}

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

@ -30,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,6 +10,7 @@
"ExpectUsers": "Expect users",
"FeedLinkWasDeleted": "Link was deleted",
"FeedLocationLabel": "Folder «{{folderTitle}}»",
"FeedLocationRoomLabel": "Room «{{folderTitle}}»",
"FileConverted": "File converted.",
"FileCopied": "Files copied.",
"FileCreated": "File created.",
@ -27,15 +28,19 @@
"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.",
"ItemsSelected": "Items selected",
"LastModifiedBy": "Last modified by",
"NoRecordsFound": "No records found",
"Properties": "Properties",
"RoomCreated": "<1>«{{roomTitle}}»</1> room created",
"RoomCreateUser": "Users added.",
"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

@ -3,7 +3,7 @@
"AddManuallyDescriptionAccounts": "Invite new users to {{productName}} personally via email",
"AddManuallyDescriptionRoom": "Add existing {{productName}} users to the room using the names or invite new users personally via email",
"EmailErrorMessage": "Email address is not valid. You can edit the email by clicking on it.",
"GroupMaxAvailableRoleWarning": "Groups have the maximum available role - “{{role}}”. You can issue an increase in rights after adding a group to the room.",
"GroupMaxAvailableRoleWarning": "Groups can be added to a room with the {{roleName}} role as maximum. However, you can change the role of individual users in the group after it has been successfully added.",
"InvitationLanguage": "Invitation language",
"InviteAccountSearchPlaceholder": "Invite people by email",
"InviteRoomSearchPlaceholder": "Invite people by name or email",

View File

@ -68,6 +68,7 @@
"LdapUserFilter": "User Filter",
"LdapUserFilterTooltip": "Use the search LDAP filter to select the users who must be imported.",
"LdapUserQuotaTooltip": "To set a storage quota for this user, enter an integer value for this attribute in the LDAP directory. It will display the quota value in bytes. This attribute will be applied only during the first setup and can be changed manually in the Accounts section.",
"LdapUserType": "User Type",
"LdapUserTypeTooltip": "All users will be added to Dockspace with the selected type."
"LdapUsersType": "Users type",
"LdapUsersTypeInfo": "Users can only access the rooms they are invited to by admins, and can't create own rooms, folders or files. Select another type below to provide more permissions. Otherwise, you can change the type manually in the Accounts section.",
"LdapUserTypeTooltip": "All users will be added to {{productName}} with the selected type."
}

View File

@ -0,0 +1,69 @@
{
"Access": "Access",
"AccessGranted": "Access granted",
"AppIcon": "App icon",
"AllowedOrigins": "Allowed origins",
"AllowedOriginsHelpButton": "URLs added here are used to improve the OAuth redirect security.",
"AllowPKCE": "Allow public client (PKCE)",
"AllowPKCEHelpButton": "PKCE is not a form of client authentication, and PKCE is not a replacement for a client secret or another client authentication type. PKCE is recommended even if a client is using a client secret or another form of client authentication like private_key_jwt.<br/> <strong>Note</strong>: Since PKCE is not a replacement for client authentication, it does not allow treating a public client as confidential one.",
"AppName": "App name",
"Apps": "Applications",
"AuthButton": "Auth button",
"AuthorizedApps": "Authorized apps",
"AuthorizeLink": "Authorize link",
"AuthenticationMethod": "Authentication method",
"Client": "Client",
"ClientCopy": "Client id successfully copied to clipboard",
"Creator": "Creator",
"ClientHelpButton": "Credentials for using OAth 2.0 as your Authentication type.<br/> <strong>Note</strong>: Any enterprise admin who knows the app's client ID will be able to retrieve information about the app including app name, authentication type, app scopes and redirect URI.",
"CodeVerifier": "Code verifier",
"DeleteHeader": "Delete application",
"DeleteDescription": "If you delete this application, all active consents and authorization will be revoked. If the user tries to open the consent screen for this app, an error will be thrown in the document space and the user will be redirected to the specified redirect URL.",
"DisableApplication": "Disable application",
"DisableApplicationDescription": "If you disable this application, all active consents and authorization will be disabled. If necessary, you can later enable the disabled application.",
"EditApp": "Edit application",
"EnterDescription": "Enter description",
"ErrorName": "Minimal name length:",
"ErrorWrongURL": "URL not valid, example",
"EnterURL": "Enter URL",
"IconDescription": "JPG, PNG or SVG, 32x32",
"ID": "ID",
"LastModified": "Last modified",
"NewApp": "New application",
"NoAuthorizedApps": "No authorized apps",
"NoOAuthAppHeader": "No OAuth applications",
"OAuth": "OAuth 2.0",
"OAuthAppDescription": "OAuth applications are used to access the ONLYOFFICE DocSpace API for authorization and further actions such as accessing files, etc.",
"OAuthHeaderBlock": "OAuth urls",
"ProfileDescription": "Here you can check the apps info to which you have granted the auth access, and revoke consent if needed.",
"PrivacyPolicy": "Privacy policy",
"PrivacyPolicyURL": "Privacy policy URL",
"PrivacyPolicyURLHelpButton": "Provide a URL link to your Privacy Policy that must comply with applicable laws and regulations and that make clear how you collect, use, share, retain and otherwise process personal information.",
"Read": "Read",
"RedirectsURLS": "Redirects URLS",
"RedirectsURLSHelpButton": "After a user successfully authorizes an application, the authorization server will redirect the user back to the application with sensitive information.",
"RegisterNewApp": "Register a new application",
"Reset": "Reset",
"ResetHeader": "Reset client secret",
"ResetDescription": "If you reset client secret, all active consents and authorization will be revoked. For apply next consent need use new client secret. Note that all users will again be required to complete the consent screen.",
"Revoke": "Revoke",
"RevokeConsent": "Revoke consent",
"RevokeConsentDescription": "Once you revoke the consent to use the ONLYOFFICE DocSpace auth data in the service {{name}}, ONLYOFFICE DocSpace will automatically stop logging into {{name}}. Your account in {{name}} will not be deleted.",
"RevokeConsentDescriptionGroup": "Once you revoke the consent to use the ONLYOFFICE DocSpace auth data in the services, ONLYOFFICE DocSpace will automatically stop logging. Your accounts will not be deleted.",
"RevokeConsentLogin": "If you want to renew an automatic login into {{name}} using ONLYOFFICE DocSpace, you will be asked to grant access to your DocSpace account data.",
"RevokeConsentLoginGroup": "If you want to renew an automatic login using ONLYOFFICE DocSpace, you will be asked to grant access to your DocSpace account data.",
"Secret": "Secret",
"SecretCopy": "Client secret successfully copied to clipboard",
"SelectNewImage": "Select new image",
"Scopes": "Scopes",
"ScopesHeader": "Access scopes",
"ScopesHelp": "Scopes are used to limit your app's access to all user-related data, and they'll let you specify exactly what kind of access you need.",
"SignIn": "Sign in with DocSpace",
"SupportAndLegalInfo": "Support & Legal info",
"TermsOfService": "Terms of Service",
"TermsOfServiceURL": "Terms of Service URL",
"TermsOfServiceURLHelpButton": "Terms and conditions that users must comply with when using this application.",
"ThisRequiredField": "This is a required field",
"WebsiteUrl": "Website URL",
"Write": "Write"
}

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

@ -10,6 +10,7 @@
"AccountsWithoutEmails": "We found <1>{{users}} users</1> without emails. You can fill their emails or continue without this action.",
"AccountsWithoutEmailsNextStep": "We found <1>{{users}} users</1> without emails. You can add necessary data to their accounts on the next step.",
"AddAllowedIP": "Add allowed IP address",
"AddEmail": "Add e-mail",
"AddEmails": "Add emails to incomplete accounts",
"AddEmailsDescription": "Check list of unimported users to import into {{organizationName}} {{productName}}.",
"AddEmailsWarning": "You don't have users with emails. Please proceed to the next step to add them.",
@ -65,6 +66,7 @@
"ButtonsColor": "Buttons",
"ByApp": "By authenticator app",
"BySms": "By sms",
"CancelImport": "Cancel import",
"ChangeLogoButton": "Change Logo",
"Characters": "{{length}} characters",
"CheckPeriod": "Check period (sec)",
@ -129,6 +131,7 @@
"ErrorsWereFound": "{{errors}} errors were found",
"ForcePathStyle": "Force Path Style",
"GroupsDescription": "Users which you selected in the previous step will be imported into groups created in {{serviceName}}. Groups will appear in the Accounts section.",
"GoogleDriveFiles": "Google Drive's Files",
"HexCode": "Hex code",
"Import": "Import",
"ImportCompleteDescriptionGoogle": "Data import from Google Workspace to {{organizationName}} {{productName}} is complete!",
@ -151,7 +154,7 @@
"LastUpdate": "Last update: {{date}}",
"LDAP": "LDAP Settings",
"LicenseLimitCounter": "License limit Admins/Power users:",
"LicenseLimitDescription": "The license limit counter consists of: already existing accounts in {{productName}} and new users that you want to import. If you import users who already have a {{productName}} account, they will not be counted again in the counter. Your {{productName}} license allows you to have a maximum of 100 users.",
"LicenseLimitDescription": "The license limit counter consists of: already existing accounts in {{productName}} and new users that you want to import. If you import users who already have a {{productName}} account, they will not be counted again in the counter. Your {{productName}} license allows you to have a maximum of {{maxLimit}} users.",
"Lifetime": "Lifetime (min)",
"LimitThemesTooltip": "You can only create 3 custom themes. To create a new one, you must delete one of the previous themes.",
"LocalFile": "Local file",
@ -299,6 +302,7 @@
"UserAgreement": "I confirm and want to proceed",
"UserLimitExceeded": "User limit exceeded. To proceed to the next step, please adjust the number of users or increase the {{productName}} user limit.",
"UsersAreRegistered": "You selected users registered in your {{productName}}, with the roles already set. Please proceed to the next step or go back to select more users.",
"UsersFiles": "Users Files",
"UsersSectionDescription": "Section \"Users\" includes the users you selected in the previous step. By default, it is always enabled and can't be unselected.",
"UseSpecialChar": "Use special characters",
"UseUpperCase": "Use capital letters",

View File

@ -3,6 +3,5 @@
"FormFilling": "Form filling",
"LinkName": "Link name",
"ShareEmailBody": "You have been granted access to the {{itemName}} document. Click the link below to open the document right now: {{shareLink}}.",
"ShareEmailSubject": "You have been granted access to the {{itemName}} document",
"SharingSettingsTitle": "Sharing settings"
"ShareEmailSubject": "You have been granted access to the {{itemName}} document"
}

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

@ -1,7 +1,4 @@
{
"Auto": "Auto",
"CodeCopySuccess": "El código se ha copiado en el portapapeles",
"EmbedCode": "Código para incrustar",
"Height": "Altura",
"Width": "Ancho"
}

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

@ -1,31 +1,12 @@
{
"AccountsEmptyScreenText": "Vea los detalles de los usuarios aquí",
"Administration": "Administración",
"AndMoreLabel": "y <strong>{{count}} más</strong>",
"AndMoreLabel": "y <1>{{count}} más</1>",
"CreationDate": "Fecha de creación",
"Data": "Datos",
"DateModified": "Fecha de modificación",
"ExpectUsers": "Esperar usuarios",
"FeedCreateFileSeveral": "Se han añadido los archivos",
"FeedCreateFileSingle": "Ha creado el archivo",
"FeedCreateFolderSeveral": "Se han añadido las carpetas",
"FeedCreateFolderSingle": "Se ha creado una carpeta",
"FeedCreateRoom": "La sala <strong>«{{roomTitle}}»</strong> se ha creado",
"FeedCreateRoomTag": "Se han añadido las etiquetas",
"FeedCreateUser": "Se han añadido usuarios",
"FeedDeleteFile": "Se han eliminado los archivos",
"FeedDeleteFolder": "Se han eliminado las carpetas",
"FeedDeleteRoomTag": "Se han eliminado las etiquetas",
"FeedDeleteUser": "Se ha eliminado el usuario",
"FeedLocationLabel": "Carpeta «{{folderTitle}}»",
"FeedMoveFile": "Se han movido los archivos",
"FeedMoveFolder": "Se han movido las carpetas",
"FeedRenameFile": "Se ha cambiado el nombre del archivo",
"FeedRenameFolder": "Se ha cambiado el nombre de la carpeta",
"FeedRenameRoom": "La sala <strong>«{{oldRoomTitle}}»</strong> ha cambiado su nombre a <strong>«{{roomTitle}}»</strong>.",
"FeedUpdateFile": "Ha actualizado el archivo",
"FeedUpdateRoom": "Se ha cambiado el icono",
"FeedUpdateUser": "se le ha asignado el rol {{role}}",
"FileExtension": "Extensión de archivo",
"FilesEmptyScreenText": "Vea los detalles de archivos y carpetas aquí",
"GalleryEmptyScreenText": "Vea aquí los detalles de la plantilla del formulario ",

View File

@ -3,7 +3,6 @@
"AddManuallyDescriptionAccounts": "Invite a nuevos usuarios a {{productName}} personalmente por correo electrónico",
"AddManuallyDescriptionRoom": "Añada usuarios existentes de {{productName}} a la sala utilizando sus nombres o invite a nuevos usuarios personalmente por correo electrónico.",
"EmailErrorMessage": "La dirección de correo electrónico no es válida. Puede editar el correo electrónico haciendo clic en él.",
"GroupMaxAvailableRoleWarning": "Los grupos tienen el rol máximo disponible: \"{{role}}\". Puede conceder permisos adicionales después de añadir un grupo a la sala.",
"InvitationLanguage": "Idioma de la invitación ",
"InviteAccountSearchPlaceholder": "Invitar por correo electrónico",
"InviteRoomSearchPlaceholder": "Invitar por nombre o correo electrónico",

View File

@ -148,7 +148,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "La configuración de idioma y zona horaria permite cambiar el idioma de todo el portal para todos los usuarios del mismo y configurar la zona horaria para que todos los eventos del portal se muestren con la fecha y hora correctas.",
"LastUpdate": "Última actualización: {{date}}",
"LicenseLimitCounter": "Límite de licencia para Administradores/Usuarios avanzados:",
"LicenseLimitDescription": "El contador de límite de licencias consta de: cuentas ya existentes en {{productName}} y nuevos usuarios que desea importar. Si importa usuarios que ya tienen una cuenta de {{productName}}, no volverán a contarse en el contador. Su licencia de {{productName}} le permite tener un máximo de 100 usuarios.",
"LicenseLimitDescription": "El contador de límite de licencias consta de: cuentas ya existentes en {{productName}} y nuevos usuarios que desea importar. Si importa usuarios que ya tienen una cuenta de {{productName}}, no volverán a contarse en el contador. Su licencia de {{productName}} le permite tener un máximo de {{maxLimit}} usuarios.",
"Lifetime": "Duración (min)",
"LimitThemesTooltip": "Solo puede crear 3 temas personalizados. Para crear uno nuevo, debe eliminar uno de los temas anteriores.",
"LocalFile": "Archivo local",

View File

@ -3,6 +3,5 @@
"FormFilling": "Relleno de formularios",
"LinkName": "Nombre del enlace",
"ShareEmailBody": "Se le ha concedido acceso al documento {{itemName}}. Haga clic en el siguiente enlace para abrir el documento ahora mismo: {{shareLink}}.",
"ShareEmailSubject": "Se le ha concedido acceso al documento {{itemName}}",
"SharingSettingsTitle": "Configuración de uso compartido"
"ShareEmailSubject": "Se le ha concedido acceso al documento {{itemName}}"
}

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

@ -1,7 +1,4 @@
{
"Auto": "Auto",
"CodeCopySuccess": "Koodi on kopioitu leikepöydälle",
"EmbedCode": "Upota koodi",
"Height": "Korkeus",
"Width": "Leveys"
}

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

@ -1,31 +1,12 @@
{
"AccountsEmptyScreenText": "Katso käyttäjätiedot täältä",
"Administration": "Hallinto",
"AndMoreLabel": "ja <strong>{{count}} enemmän</strong>",
"AndMoreLabel": "ja <1>{{count}} enemmän</1>",
"CreationDate": "Luontipäivä",
"Data": "Tiedot",
"DateModified": "Muokkauspäivämäärä",
"ExpectUsers": "Odota käyttäjiä",
"FeedCreateFileSeveral": "Tiedosto lisätty",
"FeedCreateFileSingle": "Tiedosto luotu",
"FeedCreateFolderSeveral": "Kansiot lisätty",
"FeedCreateFolderSingle": "Kansio luotu",
"FeedCreateRoom": "<strong>«{{roomTitle}}»</strong> huone luotu",
"FeedCreateRoomTag": "Tunnisteet lisätty",
"FeedCreateUser": "Käyttäjät lisätty",
"FeedDeleteFile": "Tiedostot poistettu",
"FeedDeleteFolder": "Kansiot poistettu",
"FeedDeleteRoomTag": "Tunnisteet poistettu",
"FeedDeleteUser": "Käyttäjät poistettu",
"FeedLocationLabel": "Kansio «{{folderTitle}}»",
"FeedMoveFile": "Tiedostot siirretty",
"FeedMoveFolder": "Kansiot siirretty",
"FeedRenameFile": "Tiedosto nimetty uudelleen",
"FeedRenameFolder": "Kansio nimetty uudelleen",
"FeedRenameRoom": "Huone<strong>«{{oldRoomTitle}}»</strong> nimetty uudestaan<strong>«{{roomTitle}}»</strong>.",
"FeedUpdateFile": "Tiedosto päivitetty",
"FeedUpdateRoom": "Kuvake vaihdettu",
"FeedUpdateUser": "on määrätty rooliin {{role}}",
"FileExtension": "Tiedostotunniste",
"FilesEmptyScreenText": "Katso tiedostojen ja kansioiden tiedot täältä",
"GalleryEmptyScreenText": "Katso lomakemallien yksityiskohdat täältä",

View File

@ -3,7 +3,6 @@
"AddManuallyDescriptionAccounts": "Kutsu uusia käyttäjiä {{productName}}-en henkilökohtaisesti sähköpostilla",
"AddManuallyDescriptionRoom": "Lisää olemassa olevat {{productName}}-käyttäjät huoneeseen käyttämällä nimiä tai kutsu uudet käyttäjät henkilökohtaisesti sähköpostin kautta",
"EmailErrorMessage": "Sähköpostiosoite ei ole olemassa. Voit muokata sähköpostia klikkaamalla sitä.",
"GroupMaxAvailableRoleWarning": "Ryhmillä on maksimi saatavilla-rooli -“{{role}}”. Voit antaa korotuksen oikeuksiin, kun olet lisännyt ryhmän huoneeseen.",
"InvitationLanguage": "Kutsukieli",
"InviteAccountSearchPlaceholder": "Kutsu ihmisiä sähköpostilla",
"InviteRoomSearchPlaceholder": "Kutsu ihmisiä nimellä tai sähköpostilla",

View File

@ -143,7 +143,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Kieli- ja aikavyöhyke-asetukset on tapa muuttaa koko portaalin kieli kaikille käyttäjille ja määrittää aikavyöhyke, jotta kaikki portaalin tapahtumat näytetään oikeana päivänä ja aikana.",
"LastUpdate": "Viimeinen päivitys: {{date}}",
"LicenseLimitCounter": "Lisenssiraja Järjestelmänvalvojat/Virta:",
"LicenseLimitDescription": "Lisenssirajalaskuri koostuu jo olemassa olevista {{productName}}-n tileistä ja uusistä käyttäjistä, jotka haluat tuoda. Jos tuot käyttäjiä, joilla on jo {{productName}}-tili, heitä ei lasketa uudelleen laskuriin. {{productName}}-lisenssilläsi voi olla enintaan 100 käyttäjää.",
"LicenseLimitDescription": "Lisenssirajalaskuri koostuu jo olemassa olevista {{productName}}-n tileistä ja uusistä käyttäjistä, jotka haluat tuoda. Jos tuot käyttäjiä, joilla on jo {{productName}}-tili, heitä ei lasketa uudelleen laskuriin. {{productName}}-lisenssilläsi voi olla enintaan {{maxLimit}} käyttäjää.",
"Lifetime": "Elinikä (min)",
"LimitThemesTooltip": "Voit luoda vain 3 räätälöityä teemaa. Luodaksesi uuden, sinun täytyy poistaa yksi edellisistä teemoista.",
"LocalFile": "Paikallinen tiedosto",

View File

@ -3,6 +3,5 @@
"FormFilling": "Lomakkeen täyttö",
"LinkName": "Linkin nimi",
"ShareEmailBody": "Sinulle on myönnetty käyttöoikeus asiakirjaan {{itemName}}. Avaa asiakirja heti napsauttamalla alla olevaa linkkiä: {{shareLink}}.",
"ShareEmailSubject": "Sinulle on myönnetty käyttöoikeus asiakirjaan {{itemName}}",
"SharingSettingsTitle": "Jakamisen asetukset"
"ShareEmailSubject": "Sinulle on myönnetty käyttöoikeus asiakirjaan {{itemName}}"
}

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

@ -1,7 +1,4 @@
{
"Auto": "Auto",
"CodeCopySuccess": "Le code a été copié dans le presse-papiers",
"EmbedCode": "Code d'intégration",
"Height": "Hauteur",
"Width": "Largeur"
}

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

@ -1,31 +1,12 @@
{
"AccountsEmptyScreenText": "Voir les détails des utilisateurs ici",
"Administration": "Administration",
"AndMoreLabel": "et <strong>{{count}} plus</strong>",
"AndMoreLabel": "et <1>{{count}} plus</1>",
"CreationDate": "Date de création",
"Data": "Données",
"DateModified": "Date de modification",
"ExpectUsers": "Attendez les utilisateurs",
"FeedCreateFileSeveral": "Fichiers ajoutés",
"FeedCreateFileSingle": "Fichier créé",
"FeedCreateFolderSeveral": "Dossier ajouté",
"FeedCreateFolderSingle": "Dossier créé",
"FeedCreateRoom": "<strong>«{{roomTitle}}»</strong> salle créée",
"FeedCreateRoomTag": "Étiquettes ajoutées",
"FeedCreateUser": "Utilisateurs ajoutés",
"FeedDeleteFile": "Fichiers supprimés",
"FeedDeleteFolder": "Dossier supprimé",
"FeedDeleteRoomTag": "Étiquettes supprimées",
"FeedDeleteUser": "Utilisateur supprimé",
"FeedLocationLabel": "Dossier «{{folderTitle}}»",
"FeedMoveFile": "Fichiers déplacés",
"FeedMoveFolder": "Dossier déplacé",
"FeedRenameFile": "Fichier renommé",
"FeedRenameFolder": "Dossier renommé",
"FeedRenameRoom": "Salle <strong>«{{oldRoomTitle}}»</strong> renommée à <strong>«{{roomTitle}}»</strong>.",
"FeedUpdateFile": "Fichier mis à jour",
"FeedUpdateRoom": "Icône modifiée",
"FeedUpdateUser": "a été affecté au rôle de {{role}}",
"FileExtension": "Extension de fichier",
"FilesEmptyScreenText": "Voir ici les détails des fichiers et des dossiers",
"GalleryEmptyScreenText": " Voir les détails du modèle de formulaire ici",

View File

@ -3,7 +3,6 @@
"AddManuallyDescriptionAccounts": "Invitez personnellement de nouveaux utilisateurs à {{productName}} par e-mail",
"AddManuallyDescriptionRoom": "Ajoutez des utilisateurs existants de {{productName}} à la salle en utilisant les noms ou invitez de nouveaux utilisateurs personnellement par e-mail",
"EmailErrorMessage": "Ladresse e-mail nest pas valide. Vous pouvez modifier le-mail en cliquant dessus.",
"GroupMaxAvailableRoleWarning": "Les groupes ont le rôle maximum disponible - \"{{role}}\". Vous pouvez augmenter les droits après avoir ajouté un groupe à la salle.",
"InvitationLanguage": "Langue de l'invitation",
"InviteAccountSearchPlaceholder": "Inviter des personnes par e-mail",
"InviteRoomSearchPlaceholder": "Inviter des personnes par leur nom ou leur e-mail",

View File

@ -145,7 +145,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Les paramètres de langue et de fuseau horaire permettent de modifier la langue de l'ensemble du portail pour tous les utilisateurs du portail et de configurer le fuseau horaire de manière à ce que tous les événements du portail soient affichés avec la date et l'heure correctes.",
"LastUpdate": "Dernière mise à jour: {{date}}",
"LicenseLimitCounter": "Limite autorisée des Administrateurs/Utilisateurs avancés",
"LicenseLimitDescription": "Le compteur de la limite autorisée inclut: les comptes existants dans {{productName}} et de nouveaux utilisateurs que vous souhaitez importer. Lors de l'importation, le compteur ne prend pas en compte les utilisateurs qui ont déjà un compte {{productName}}. Votre licence {{productName}} vous permet d'avoir 100 utilisateurs au maximum.",
"LicenseLimitDescription": "Le compteur de la limite autorisée inclut: les comptes existants dans {{productName}} et de nouveaux utilisateurs que vous souhaitez importer. Lors de l'importation, le compteur ne prend pas en compte les utilisateurs qui ont déjà un compte {{productName}}. Votre licence {{productName}} vous permet d'avoir {{maxLimit}} utilisateurs au maximum.",
"Lifetime": "Durée de vie (min)",
"LimitThemesTooltip": "Vous ne pouvez créer que 3 thèmes personnalisés. Pour en créer un nouveau, vous devez supprimer lun des thèmes précédents.",
"LocalFile": "Fichier local",

View File

@ -3,6 +3,5 @@
"FormFilling": "Remplissage de formulaire",
"LinkName": "Nom du lien",
"ShareEmailBody": "Vous avez été autorisé à accéder au document {{itemName}}. Cliquez sur le lien ci-dessous pour ouvrir le document maintenant : {{shareLink}}.",
"ShareEmailSubject": "Vous avez été autorisé à accéder au document {{itemName}}",
"SharingSettingsTitle": "Paramètres de partage"
"ShareEmailSubject": "Vous avez été autorisé à accéder au document {{itemName}}"
}

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

@ -1,7 +1,4 @@
{
"Auto": "Ինքնաշխատ",
"CodeCopySuccess": "Կոդը պատճենվել է Սեղմատախտակում",
"EmbedCode": "Ներկառուցման կոդ",
"Height": "Բարձրություն",
"Width": "Լայնություն"
}

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

@ -1,31 +1,12 @@
{
"AccountsEmptyScreenText": "Դիտեք օգտվողների մանրամասները այստեղ",
"Administration": "Ադմինիստրացիա",
"AndMoreLabel": "և <strong>{{count}} ավելի</strong>",
"AndMoreLabel": "և <1>{{count}} ավելի</1>",
"CreationDate": "Ստեղծման ամսաթիվ",
"Data": "Տվյալներ",
"DateModified": "Կերպափոխման ամսաթիվ",
"ExpectUsers": "Սպասեք օգտատերերին",
"FeedCreateFileSeveral": "Ֆայլերը ավելացվեցին",
"FeedCreateFileSingle": "Ֆայլը ստեղծված է",
"FeedCreateFolderSeveral": "Թղթապանակները ավելացվել են",
"FeedCreateFolderSingle": "Թղթապանակը ստեղծվել է:",
"FeedCreateRoom": "<strong>«{{roomTitle}}»</strong> սենյակը ստեղծվել է",
"FeedCreateRoomTag": "Ավելացվեցին պիտակներ։",
"FeedCreateUser": "Օգտատերերն ավելացրել են",
"FeedDeleteFile": "Ֆայլերը հեռացվել են:",
"FeedDeleteFolder": "Թղթապանակները տեղափոխվեցին:",
"FeedDeleteRoomTag": "Թեգերը հեռացվել են։",
"FeedDeleteUser": "Օգտատերը հեռացվել է",
"FeedLocationLabel": "Թղթապանակ «{{folderTitle}}»",
"FeedMoveFile": "Ֆայլերը տեղափոխվեցին:",
"FeedMoveFolder": "Թղթապանակները տեղափոխվեցին:",
"FeedRenameFile": "Ֆայլը վերանվանվեց",
"FeedRenameFolder": "Թղթապանակը վերանվանվել է։",
"FeedRenameRoom": "Սենյակը <strong>«{{oldRoomTitle}}»</strong> վերանվանվել է <strong>«{{roomTitle}}»</strong>:",
"FeedUpdateFile": "Ֆայլը արդիացվեց",
"FeedUpdateRoom": "Պատկերակը փոխվել է",
"FeedUpdateUser": "նշանակվել է դեր {{role}}",
"FileExtension": "ֆայլի ընդլայնում",
"FilesEmptyScreenText": "Ֆայլի և պանակի մանրամասները տես այստեղ",
"GalleryEmptyScreenText": "Տեսեք ձևանմուշի մանրամասները այստեղ",

View File

@ -3,7 +3,6 @@
"AddManuallyDescriptionAccounts": "Հրավիրեք նոր օգտվողներին {{productName}} անձամբ էլփոստի միջոցով",
"AddManuallyDescriptionRoom": "Ավելացրեք {{productName}}-ի առկա օգտատերերին սենյակին՝ օգտագործելով անունները կամ անձամբ հրավիրեք նոր օգտատերերի էլփոստի միջոցով",
"EmailErrorMessage": "Էլփոստի հասցեն վավեր չէ: Դուք կարող եք խմբագրել էլփոստը՝ սեղմելով դրա վրա:",
"GroupMaxAvailableRoleWarning": "Խմբերն ունեն առավելագույն հասանելի դերը՝ “{{role}}”: Դուք կարող եք ավելացնել իրավունքների ավելացում սենյակում խումբ ավելացնելուց հետո:",
"InvitationLanguage": "Հրավերների լեզու",
"InviteAccountSearchPlaceholder": "Հրավիրեք մարդկանց էլ փոստով",
"InviteRoomSearchPlaceholder": "Հրավիրեք մարդկանց անունով կամ էլ փոստով",

View File

@ -147,7 +147,7 @@
"LanguageAndTimeZoneSettingsNavDescription": "Լեզվի և ժամային գոտու կարգավորումները պորտալի բոլոր օգտագործողների համար ամբողջ պորտալի լեզուն փոխելու և ժամային գոտին այնպես կարգավորելու միջոց է, որպեսզի պորտալի բոլոր իրադարձությունները ցուցադրվեն ճիշտ ամսաթվով և ժամով:",
"LastUpdate": "Վերջին թարմացում: {{date}}",
"LicenseLimitCounter": "Լիցենզիայի սահմանաչափ ադմիններ/հզորություն.",
"LicenseLimitDescription": "Լիցենզիայի սահմանաչափը բաղկացած է {{productName}}-ում արդեն գոյություն ունեցող հաշիվներից և նոր օգտվողներից, որոնք ցանկանում եք ներմուծել: Եթե ներմուծում եք օգտատերեր, ովքեր արդեն ունեն {{productName}} հաշիվ, նրանք կրկին չեն հաշվվելու հաշվիչում: Ձեր {{productName}} լիցենզիան թույլ է տալիս ունենալ առավելագույնը 100 օգտվող:",
"LicenseLimitDescription": "Լիցենզիայի սահմանաչափը բաղկացած է {{productName}}-ում արդեն գոյություն ունեցող հաշիվներից և նոր օգտվողներից, որոնք ցանկանում եք ներմուծել: Եթե ներմուծում եք օգտատերեր, ովքեր արդեն ունեն {{productName}} հաշիվ, նրանք կրկին չեն հաշվվելու հաշվիչում: Ձեր {{productName}} լիցենզիան թույլ է տալիս ունենալ առավելագույնը {{maxLimit}} օգտվող:",
"Lifetime": "Աշխատաժամ (րոպե)",
"LimitThemesTooltip": "Դուք կարող եք ստեղծել միայն 3 հատուկ թեմա: Նորը ստեղծելու համար դուք պետք է ջնջեք նախորդ թեմաներից մեկը:",
"LocalFile": "Տեղական ֆայլ",

View File

@ -3,6 +3,5 @@
"FormFilling": "Ձևաթղթի լրացում",
"LinkName": "Հղման անվանում",
"ShareEmailBody": "Ձեզ տրվել է մատչում դեպի {{itemName}} փաստաթուղթ: Փաստաթուղթը հենց հիմա բացելու համար սեղմեք ստորև նշված հղումը՝ {{shareLink}}.",
"ShareEmailSubject": "Ձեզ տրվել է մատչում դեպի {{itemName}} փաստաթուղթ:",
"SharingSettingsTitle": "Համօգտագործման կարգավորումներ"
"ShareEmailSubject": "Ձեզ տրվել է մատչում դեպի {{itemName}} փաստաթուղթ:"
}

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