diff --git a/CHANGELOG.md b/CHANGELOG.md index 167988d40..fd7fcdbbd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,10 +14,12 @@ This document is formatted according to the principles of [Keep A CHANGELOG](htt - [c] slight update to existing CMakeFiles.txt to propagate VERSION. Close #320 ([#328](https://github.com/cucumber/gherkin/pull/328)) - [.NET] Improved parsing time - [.NET] Use string-ordinal comparison consistently and remove old Mono workaround +- [.NET] Improved startup time ### Changed - [cpp] add generic support for ABI versioning with VERSION ([#328](https://github.com/cucumber/gherkin/pull/328)) - [cpp] namespace was changed to 'cucumber::gherkin' to better reflect project structure and prevent clashing +- [.NET] Removed dependency on System.Text.Json and related logic in GherkinDialectProvider ## [30.0.4] - 2024-11-15 ### Fixed diff --git a/dotnet/Gherkin.SourceGenerator/Gherkin.SourceGenerator.csproj b/dotnet/Gherkin.SourceGenerator/Gherkin.SourceGenerator.csproj new file mode 100644 index 000000000..c48955763 --- /dev/null +++ b/dotnet/Gherkin.SourceGenerator/Gherkin.SourceGenerator.csproj @@ -0,0 +1,38 @@ + + + + netstandard2.0 + latest + enable + true + true + false + $(GetTargetPathDependsOn);GetDependencyTargetPaths + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + diff --git a/dotnet/Gherkin.SourceGenerator/GherkinLanguageSetting.cs b/dotnet/Gherkin.SourceGenerator/GherkinLanguageSetting.cs new file mode 100644 index 000000000..60ba00404 --- /dev/null +++ b/dotnet/Gherkin.SourceGenerator/GherkinLanguageSetting.cs @@ -0,0 +1,18 @@ +namespace Gherkin.SourceGenerator; + +class GherkinLanguageSetting +{ + public string? Name { get; set; } + public string? Native { get; set; } + public string?[]? Feature { get; set; } + public string?[]? Rule { get; set; } + public string?[]? Background { get; set; } + public string?[]? Scenario { get; set; } + public string?[]? ScenarioOutline { get; set; } + public string?[]? Examples { get; set; } + public string?[]? Given { get; set; } + public string?[]? When { get; set; } + public string?[]? Then { get; set; } + public string?[]? And { get; set; } + public string?[]? But { get; set; } +} diff --git a/dotnet/Gherkin.SourceGenerator/LanguageDialectGenerator.cs b/dotnet/Gherkin.SourceGenerator/LanguageDialectGenerator.cs new file mode 100644 index 000000000..0eafb9cae --- /dev/null +++ b/dotnet/Gherkin.SourceGenerator/LanguageDialectGenerator.cs @@ -0,0 +1,141 @@ +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Text; +using System.Text; + +namespace Gherkin.SourceGenerator; + +[Generator] +public class LanguageDialectGenerator : IIncrementalGenerator +{ + const string GeneratorVersion = "1.0.0"; + record ClassToAddLanguageDialects(string? Namespace, string ClassName); + + public void Initialize(IncrementalGeneratorInitializationContext context) + { + //System.Diagnostics.Debugger.Launch(); + + context.RegisterPostInitializationOutput(context => context.AddSource( + "LanguageDialectGeneratedAttribute.g.cs", + SourceText.From(""" + [System.AttributeUsage(System.AttributeTargets.Class)] + internal sealed class LanguageDialectGeneratedAttribute : Attribute { } + """, Encoding.UTF8))); + + var pipeline = context.SyntaxProvider.ForAttributeWithMetadataName( + fullyQualifiedMetadataName: "LanguageDialectGeneratedAttribute", + predicate: static (syntaxNode, cancelToken) => syntaxNode is ClassDeclarationSyntax, + transform: static (context, cancelToken) => + { + var targetSymbol = (INamedTypeSymbol)context.TargetSymbol; + var ns = targetSymbol.ContainingNamespace?.ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat.WithGlobalNamespaceStyle(SymbolDisplayGlobalNamespaceStyle.Omitted)); + var className = targetSymbol.Name; + return new ClassToAddLanguageDialects(ns, className); + }); + + context.RegisterSourceOutput(pipeline, static (context, classToAdd) => + { + var allLanguageSettings = LoadLanguageSettings(); + + var sb = new StringBuilder(); + if (classToAdd.Namespace is not null) + sb.AppendLine($"namespace {classToAdd.Namespace};"); + sb.AppendLine($$""" +public partial class {{classToAdd.ClassName}} +{ + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Gherkin.SourceGenerator", "{{GeneratorVersion}}")] + [global::System.Runtime.CompilerServices.MethodImpl(global::System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + private static GherkinDialect TryCreateGherkinDialect(string language) + { + switch (language) + { +"""); + foreach (var (language, methodSuffix, _) in allLanguageSettings) + { + sb.AppendLine($$""" + case {{FormatLiteral(language)}}: + return CreateGherkinDialectFor_{{methodSuffix}}(); +"""); + } + + sb.AppendLine($$""" + default: + return null; + } + } + +"""); + foreach (var (language, methodSuffix, languageSettings) in allLanguageSettings) + { + sb.AppendLine($$""" + + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Gherkin.SourceGenerator", "{{GeneratorVersion}}")] + [global::System.Runtime.CompilerServices.MethodImpl(global::System.Runtime.CompilerServices.MethodImplOptions.NoInlining)] + private static GherkinDialect CreateGherkinDialectFor_{{methodSuffix}}() + { + return new GherkinDialect( + {{FormatLiteral(language)}}, + {{FormatListLiteral(languageSettings.Feature)}}, + {{FormatListLiteral(languageSettings.Rule)}}, + {{FormatListLiteral(languageSettings.Background)}}, + {{FormatListLiteral(languageSettings.Scenario)}}, + {{FormatListLiteral(languageSettings.ScenarioOutline)}}, + {{FormatListLiteral(languageSettings.Examples)}}, + {{FormatListLiteral(languageSettings.Given)}}, + {{FormatListLiteral(languageSettings.When)}}, + {{FormatListLiteral(languageSettings.Then)}}, + {{FormatListLiteral(languageSettings.And)}}, + {{FormatListLiteral(languageSettings.But)}}); + } +"""); + } + + sb.AppendLine(@" +}" + ); + + context.AddSource($"GherkinDialectProvider.LanguageDialect.g.cs", SourceText.From(sb.ToString(), Encoding.UTF8)); + }); + } + + static string FormatListLiteral(IEnumerable? items) + { + if (items is null) + return "null"; + bool first = true; + var sb = new StringBuilder(); + sb.Append("["); + foreach (var item in items) + { + if (first) + first = false; + else + sb.Append(", "); + if (item is null) + sb.Append("null"); + else + sb.Append(FormatLiteral(item)); + } + sb.Append("]"); + return sb.ToString(); + } + + static string FormatLiteral(string value) => Microsoft.CodeAnalysis.CSharp.SymbolDisplay.FormatLiteral(value, true); + + static List<(string Language, string MethodSuffix, GherkinLanguageSetting Settings)> LoadLanguageSettings() + { + const string languageFileName = "gherkin-languages.json"; + + var assembly = typeof(LanguageDialectGenerator).Assembly; + var resourceStream = assembly.GetManifestResourceStream("Gherkin.SourceGenerator." + languageFileName); + + if (resourceStream == null) + throw new InvalidOperationException("Gherkin language resource not found: " + languageFileName); + var languagesFileContent = new StreamReader(resourceStream).ReadToEnd(); + + var result = Newtonsoft.Json.JsonConvert.DeserializeObject>(languagesFileContent); + if (result is null) + throw new InvalidOperationException("Gherkin language resource is empty: " + languageFileName); + return result.OrderBy(x => x.Key).Select(x => (x.Key, x.Key.Replace("-", "_"), x.Value)).ToList(); + } +} diff --git a/dotnet/Gherkin.Specs/Gherkin.Specs.csproj b/dotnet/Gherkin.Specs/Gherkin.Specs.csproj index faf4cea3c..4c642d791 100644 --- a/dotnet/Gherkin.Specs/Gherkin.Specs.csproj +++ b/dotnet/Gherkin.Specs/Gherkin.Specs.csproj @@ -17,6 +17,10 @@ + + + + diff --git a/dotnet/Gherkin.sln b/dotnet/Gherkin.sln index e1dfc4dcc..d7d9b7cad 100644 --- a/dotnet/Gherkin.sln +++ b/dotnet/Gherkin.sln @@ -20,6 +20,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Gherkin.Benchmarks", "Gherkin.Benchmarks\Gherkin.Benchmarks.csproj", "{4DC5C858-3F32-44E7-8FF6-7D85A16F7FF7}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Gherkin.SourceGenerator", "Gherkin.SourceGenerator\Gherkin.SourceGenerator.csproj", "{0DF5A047-E6CB-44FE-9A79-AB55DF5C87D6}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -38,6 +40,10 @@ Global {4DC5C858-3F32-44E7-8FF6-7D85A16F7FF7}.Debug|Any CPU.Build.0 = Debug|Any CPU {4DC5C858-3F32-44E7-8FF6-7D85A16F7FF7}.Release|Any CPU.ActiveCfg = Release|Any CPU {4DC5C858-3F32-44E7-8FF6-7D85A16F7FF7}.Release|Any CPU.Build.0 = Release|Any CPU + {0DF5A047-E6CB-44FE-9A79-AB55DF5C87D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0DF5A047-E6CB-44FE-9A79-AB55DF5C87D6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0DF5A047-E6CB-44FE-9A79-AB55DF5C87D6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0DF5A047-E6CB-44FE-9A79-AB55DF5C87D6}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/dotnet/Gherkin/Gherkin.csproj b/dotnet/Gherkin/Gherkin.csproj index e19686909..d09704325 100644 --- a/dotnet/Gherkin/Gherkin.csproj +++ b/dotnet/Gherkin/Gherkin.csproj @@ -19,7 +19,7 @@ Gherkin Parser Gherkin Cucumber Ltd, Gaspar Nagy - Copyright © Cucumber Ltd, Gaspar Nagy + Copyright © Cucumber Ltd, Gaspar Nagy Cross-platform parser for the Gherkin language, used by Cucumber, SpecFlow and other Cucumber-based tools to parse feature files. specflow gherkin cucumber https://github.com/cucumber/gherkin @@ -32,12 +32,8 @@ bin/$(Configuration)/NuGet - - - - - + diff --git a/dotnet/Gherkin/GherkinDialectProvider.cs b/dotnet/Gherkin/GherkinDialectProvider.cs index 67eef4125..90bd44637 100644 --- a/dotnet/Gherkin/GherkinDialectProvider.cs +++ b/dotnet/Gherkin/GherkinDialectProvider.cs @@ -1,6 +1,4 @@ using Gherkin.Ast; -using System.Text.Json; -using System.Text.Json.Serialization; namespace Gherkin; @@ -10,7 +8,8 @@ public interface IGherkinDialectProvider GherkinDialect GetDialect(string language, Location location); } -public class GherkinDialectProvider : IGherkinDialectProvider +[LanguageDialectGenerated] +public partial class GherkinDialectProvider : IGherkinDialectProvider { private readonly Lazy defaultDialect; @@ -26,8 +25,8 @@ public GherkinDialectProvider(string defaultLanguage = "en") protected virtual bool TryGetDialect(string language, Location location, out GherkinDialect dialect) { - var gherkinLanguageSettings = LoadLanguageSettings(); - return TryGetDialect(language, gherkinLanguageSettings, location, out dialect); + dialect = TryCreateGherkinDialect(language); + return dialect is not null; } public virtual GherkinDialect GetDialect(string language, Location location) @@ -37,65 +36,6 @@ public virtual GherkinDialect GetDialect(string language, Location location) return dialect; } - protected virtual Dictionary LoadLanguageSettings() - { - const string languageFileName = "gherkin-languages.json"; - - var assembly = typeof(GherkinDialectProvider).Assembly; - var resourceStream = assembly.GetManifestResourceStream("Gherkin." + languageFileName); - - if (resourceStream == null) - throw new InvalidOperationException("Gherkin language resource not found: " + languageFileName); - var languagesFileContent = new StreamReader(resourceStream).ReadToEnd(); - - return ParseJsonContent(languagesFileContent); - } - - protected virtual Dictionary ParseJsonContent(string languagesFileContent) - { - return JsonSerializer.Deserialize>(languagesFileContent, new JsonSerializerOptions(JsonSerializerDefaults.Web) { TypeInfoResolver = SourceGenerationContext.Default }); - } - - protected virtual bool TryGetDialect(string language, Dictionary gherkinLanguageSettings, Location location, out GherkinDialect dialect) - { - if (!gherkinLanguageSettings.TryGetValue(language, out var languageSettings)) - { - dialect = null; - return false; - } - - dialect = CreateGherkinDialect(language, languageSettings); - return true; - } - - protected GherkinDialect CreateGherkinDialect(string language, GherkinLanguageSetting languageSettings) - { - return new GherkinDialect( - language, - ParseTitleKeywords(languageSettings.Feature), - ParseTitleKeywords(languageSettings.Rule), - ParseTitleKeywords(languageSettings.Background), - ParseTitleKeywords(languageSettings.Scenario), - ParseTitleKeywords(languageSettings.ScenarioOutline), - ParseTitleKeywords(languageSettings.Examples), - ParseStepKeywords(languageSettings.Given), - ParseStepKeywords(languageSettings.When), - ParseStepKeywords(languageSettings.Then), - ParseStepKeywords(languageSettings.And), - ParseStepKeywords(languageSettings.But) - ); - } - - private string[] ParseStepKeywords(string[] stepKeywords) - { - return stepKeywords; - } - - private string[] ParseTitleKeywords(string[] keywords) - { - return keywords; - } - protected static GherkinDialect GetFactoryDefault() { return new GherkinDialect( @@ -113,26 +53,3 @@ protected static GherkinDialect GetFactoryDefault() ["* ", "But "]); } } - -[JsonSourceGenerationOptions] -[JsonSerializable(typeof(Dictionary))] -internal partial class SourceGenerationContext : JsonSerializerContext -{ -} - -public class GherkinLanguageSetting -{ - public string Name { get; set; } - public string Native { get; set; } - public string[] Feature { get; set; } - public string[] Rule { get; set; } - public string[] Background { get; set; } - public string[] Scenario { get; set; } - public string[] ScenarioOutline { get; set; } - public string[] Examples { get; set; } - public string[] Given { get; set; } - public string[] When { get; set; } - public string[] Then { get; set; } - public string[] And { get; set; } - public string[] But { get; set; } -} diff --git a/dotnet/Gherkin/gherkin-languages.json b/dotnet/Gherkin/gherkin-languages.json deleted file mode 100644 index 3953e610c..000000000 --- a/dotnet/Gherkin/gherkin-languages.json +++ /dev/null @@ -1,3831 +0,0 @@ -{ - "af": { - "and": [ - "* ", - "En " - ], - "background": [ - "Agtergrond" - ], - "but": [ - "* ", - "Maar " - ], - "examples": [ - "Voorbeelde" - ], - "feature": [ - "Funksie", - "Besigheid Behoefte", - "Vermoë" - ], - "given": [ - "* ", - "Gegewe " - ], - "name": "Afrikaans", - "native": "Afrikaans", - "rule": [ - "Regel" - ], - "scenario": [ - "Voorbeeld", - "Situasie" - ], - "scenarioOutline": [ - "Situasie Uiteensetting" - ], - "then": [ - "* ", - "Dan " - ], - "when": [ - "* ", - "Wanneer " - ] - }, - "am": { - "and": [ - "* ", - "Եվ " - ], - "background": [ - "Կոնտեքստ" - ], - "but": [ - "* ", - "Բայց " - ], - "examples": [ - "Օրինակներ" - ], - "feature": [ - "Ֆունկցիոնալություն", - "Հատկություն" - ], - "given": [ - "* ", - "Դիցուք " - ], - "name": "Armenian", - "native": "հայերեն", - "rule": [ - "Rule" - ], - "scenario": [ - "Օրինակ", - "Սցենար" - ], - "scenarioOutline": [ - "Սցենարի կառուցվացքը" - ], - "then": [ - "* ", - "Ապա " - ], - "when": [ - "* ", - "Եթե ", - "Երբ " - ] - }, - "an": { - "and": [ - "* ", - "Y ", - "E " - ], - "background": [ - "Antecedents" - ], - "but": [ - "* ", - "Pero " - ], - "examples": [ - "Eixemplos" - ], - "feature": [ - "Caracteristica" - ], - "given": [ - "* ", - "Dau ", - "Dada ", - "Daus ", - "Dadas " - ], - "name": "Aragonese", - "native": "Aragonés", - "rule": [ - "Rule" - ], - "scenario": [ - "Eixemplo", - "Caso" - ], - "scenarioOutline": [ - "Esquema del caso" - ], - "then": [ - "* ", - "Alavez ", - "Allora ", - "Antonces " - ], - "when": [ - "* ", - "Cuan " - ] - }, - "ar": { - "and": [ - "* ", - "و " - ], - "background": [ - "الخلفية" - ], - "but": [ - "* ", - "لكن " - ], - "examples": [ - "امثلة" - ], - "feature": [ - "خاصية" - ], - "given": [ - "* ", - "بفرض " - ], - "name": "Arabic", - "native": "العربية", - "rule": [ - "Rule" - ], - "scenario": [ - "مثال", - "سيناريو" - ], - "scenarioOutline": [ - "سيناريو مخطط" - ], - "then": [ - "* ", - "اذاً ", - "ثم " - ], - "when": [ - "* ", - "متى ", - "عندما " - ] - }, - "ast": { - "and": [ - "* ", - "Y ", - "Ya " - ], - "background": [ - "Antecedentes" - ], - "but": [ - "* ", - "Peru " - ], - "examples": [ - "Exemplos" - ], - "feature": [ - "Carauterística" - ], - "given": [ - "* ", - "Dáu ", - "Dada ", - "Daos ", - "Daes " - ], - "name": "Asturian", - "native": "asturianu", - "rule": [ - "Rule" - ], - "scenario": [ - "Exemplo", - "Casu" - ], - "scenarioOutline": [ - "Esbozu del casu" - ], - "then": [ - "* ", - "Entós " - ], - "when": [ - "* ", - "Cuando " - ] - }, - "az": { - "and": [ - "* ", - "Və ", - "Həm " - ], - "background": [ - "Keçmiş", - "Kontekst" - ], - "but": [ - "* ", - "Amma ", - "Ancaq " - ], - "examples": [ - "Nümunələr" - ], - "feature": [ - "Özəllik" - ], - "given": [ - "* ", - "Tutaq ki ", - "Verilir " - ], - "name": "Azerbaijani", - "native": "Azərbaycanca", - "rule": [ - "Rule" - ], - "scenario": [ - "Nümunə", - "Ssenari" - ], - "scenarioOutline": [ - "Ssenarinin strukturu" - ], - "then": [ - "* ", - "O halda " - ], - "when": [ - "* ", - "Əgər ", - "Nə vaxt ki " - ] - }, - "be": { - "and": [ - "* ", - "I ", - "Ды ", - "Таксама " - ], - "background": [ - "Кантэкст" - ], - "but": [ - "* ", - "Але ", - "Інакш " - ], - "examples": [ - "Прыклады" - ], - "feature": [ - "Функцыянальнасць", - "Фіча" - ], - "given": [ - "* ", - "Няхай ", - "Дадзена " - ], - "name": "Belarusian", - "native": "Беларуская", - "rule": [ - "Правілы" - ], - "scenario": [ - "Сцэнарый", - "Cцэнар" - ], - "scenarioOutline": [ - "Шаблон сцэнарыя", - "Узор сцэнара" - ], - "then": [ - "* ", - "Тады " - ], - "when": [ - "* ", - "Калі " - ] - }, - "bg": { - "and": [ - "* ", - "И " - ], - "background": [ - "Предистория" - ], - "but": [ - "* ", - "Но " - ], - "examples": [ - "Примери" - ], - "feature": [ - "Функционалност" - ], - "given": [ - "* ", - "Дадено " - ], - "name": "Bulgarian", - "native": "български", - "rule": [ - "Правило" - ], - "scenario": [ - "Пример", - "Сценарий" - ], - "scenarioOutline": [ - "Рамка на сценарий" - ], - "then": [ - "* ", - "То " - ], - "when": [ - "* ", - "Когато " - ] - }, - "bm": { - "and": [ - "* ", - "Dan " - ], - "background": [ - "Latar Belakang" - ], - "but": [ - "* ", - "Tetapi ", - "Tapi " - ], - "examples": [ - "Contoh" - ], - "feature": [ - "Fungsi" - ], - "given": [ - "* ", - "Diberi ", - "Bagi " - ], - "name": "Malay", - "native": "Bahasa Melayu", - "rule": [ - "Rule" - ], - "scenario": [ - "Senario", - "Situasi", - "Keadaan" - ], - "scenarioOutline": [ - "Kerangka Senario", - "Kerangka Situasi", - "Kerangka Keadaan", - "Garis Panduan Senario" - ], - "then": [ - "* ", - "Maka ", - "Kemudian " - ], - "when": [ - "* ", - "Apabila " - ] - }, - "bs": { - "and": [ - "* ", - "I ", - "A " - ], - "background": [ - "Pozadina" - ], - "but": [ - "* ", - "Ali " - ], - "examples": [ - "Primjeri" - ], - "feature": [ - "Karakteristika" - ], - "given": [ - "* ", - "Dato " - ], - "name": "Bosnian", - "native": "Bosanski", - "rule": [ - "Rule" - ], - "scenario": [ - "Primjer", - "Scenariju", - "Scenario" - ], - "scenarioOutline": [ - "Scenariju-obris", - "Scenario-outline" - ], - "then": [ - "* ", - "Zatim " - ], - "when": [ - "* ", - "Kada " - ] - }, - "ca": { - "and": [ - "* ", - "I " - ], - "background": [ - "Rerefons", - "Antecedents" - ], - "but": [ - "* ", - "Però " - ], - "examples": [ - "Exemples" - ], - "feature": [ - "Característica", - "Funcionalitat" - ], - "given": [ - "* ", - "Donat ", - "Donada ", - "Atès ", - "Atesa " - ], - "name": "Catalan", - "native": "català", - "rule": [ - "Rule" - ], - "scenario": [ - "Exemple", - "Escenari" - ], - "scenarioOutline": [ - "Esquema de l'escenari" - ], - "then": [ - "* ", - "Aleshores ", - "Cal " - ], - "when": [ - "* ", - "Quan " - ] - }, - "cs": { - "and": [ - "* ", - "A také ", - "A " - ], - "background": [ - "Pozadí", - "Kontext" - ], - "but": [ - "* ", - "Ale " - ], - "examples": [ - "Příklady" - ], - "feature": [ - "Požadavek" - ], - "given": [ - "* ", - "Pokud ", - "Za předpokladu " - ], - "name": "Czech", - "native": "Česky", - "rule": [ - "Pravidlo" - ], - "scenario": [ - "Příklad", - "Scénář" - ], - "scenarioOutline": [ - "Náčrt Scénáře", - "Osnova scénáře" - ], - "then": [ - "* ", - "Pak " - ], - "when": [ - "* ", - "Když " - ] - }, - "cy-GB": { - "and": [ - "* ", - "A " - ], - "background": [ - "Cefndir" - ], - "but": [ - "* ", - "Ond " - ], - "examples": [ - "Enghreifftiau" - ], - "feature": [ - "Arwedd" - ], - "given": [ - "* ", - "Anrhegedig a " - ], - "name": "Welsh", - "native": "Cymraeg", - "rule": [ - "Rule" - ], - "scenario": [ - "Enghraifft", - "Scenario" - ], - "scenarioOutline": [ - "Scenario Amlinellol" - ], - "then": [ - "* ", - "Yna " - ], - "when": [ - "* ", - "Pryd " - ] - }, - "da": { - "and": [ - "* ", - "Og " - ], - "background": [ - "Baggrund" - ], - "but": [ - "* ", - "Men " - ], - "examples": [ - "Eksempler" - ], - "feature": [ - "Egenskab" - ], - "given": [ - "* ", - "Givet " - ], - "name": "Danish", - "native": "dansk", - "rule": [ - "Regel" - ], - "scenario": [ - "Eksempel", - "Scenarie" - ], - "scenarioOutline": [ - "Abstrakt Scenario" - ], - "then": [ - "* ", - "Så " - ], - "when": [ - "* ", - "Når " - ] - }, - "de": { - "and": [ - "* ", - "Und " - ], - "background": [ - "Grundlage", - "Hintergrund", - "Voraussetzungen", - "Vorbedingungen" - ], - "but": [ - "* ", - "Aber " - ], - "examples": [ - "Beispiele" - ], - "feature": [ - "Funktionalität", - "Funktion" - ], - "given": [ - "* ", - "Angenommen ", - "Gegeben sei ", - "Gegeben seien " - ], - "name": "German", - "native": "Deutsch", - "rule": [ - "Rule", - "Regel" - ], - "scenario": [ - "Beispiel", - "Szenario" - ], - "scenarioOutline": [ - "Szenariogrundriss", - "Szenarien" - ], - "then": [ - "* ", - "Dann " - ], - "when": [ - "* ", - "Wenn " - ] - }, - "el": { - "and": [ - "* ", - "Και " - ], - "background": [ - "Υπόβαθρο" - ], - "but": [ - "* ", - "Αλλά " - ], - "examples": [ - "Παραδείγματα", - "Σενάρια" - ], - "feature": [ - "Δυνατότητα", - "Λειτουργία" - ], - "given": [ - "* ", - "Δεδομένου " - ], - "name": "Greek", - "native": "Ελληνικά", - "rule": [ - "Rule" - ], - "scenario": [ - "Παράδειγμα", - "Σενάριο" - ], - "scenarioOutline": [ - "Περιγραφή Σεναρίου", - "Περίγραμμα Σεναρίου" - ], - "then": [ - "* ", - "Τότε " - ], - "when": [ - "* ", - "Όταν " - ] - }, - "em": { - "and": [ - "* ", - "😂" - ], - "background": [ - "💤" - ], - "but": [ - "* ", - "😔" - ], - "examples": [ - "📓" - ], - "feature": [ - "📚" - ], - "given": [ - "* ", - "😐" - ], - "name": "Emoji", - "native": "😀", - "rule": [ - "Rule" - ], - "scenario": [ - "🥒", - "📕" - ], - "scenarioOutline": [ - "📖" - ], - "then": [ - "* ", - "🙏" - ], - "when": [ - "* ", - "🎬" - ] - }, - "en": { - "and": [ - "* ", - "And " - ], - "background": [ - "Background" - ], - "but": [ - "* ", - "But " - ], - "examples": [ - "Examples", - "Scenarios" - ], - "feature": [ - "Feature", - "Business Need", - "Ability" - ], - "given": [ - "* ", - "Given " - ], - "name": "English", - "native": "English", - "rule": [ - "Rule" - ], - "scenario": [ - "Example", - "Scenario" - ], - "scenarioOutline": [ - "Scenario Outline", - "Scenario Template" - ], - "then": [ - "* ", - "Then " - ], - "when": [ - "* ", - "When " - ] - }, - "en-Scouse": { - "and": [ - "* ", - "An " - ], - "background": [ - "Dis is what went down" - ], - "but": [ - "* ", - "Buh " - ], - "examples": [ - "Examples" - ], - "feature": [ - "Feature" - ], - "given": [ - "* ", - "Givun ", - "Youse know when youse got " - ], - "name": "Scouse", - "native": "Scouse", - "rule": [ - "Rule" - ], - "scenario": [ - "The thing of it is" - ], - "scenarioOutline": [ - "Wharrimean is" - ], - "then": [ - "* ", - "Dun ", - "Den youse gotta " - ], - "when": [ - "* ", - "Wun ", - "Youse know like when " - ] - }, - "en-au": { - "and": [ - "* ", - "Too right " - ], - "background": [ - "First off" - ], - "but": [ - "* ", - "Yeah nah " - ], - "examples": [ - "You'll wanna" - ], - "feature": [ - "Pretty much" - ], - "given": [ - "* ", - "Y'know " - ], - "name": "Australian", - "native": "Australian", - "rule": [ - "Rule" - ], - "scenario": [ - "Awww, look mate" - ], - "scenarioOutline": [ - "Reckon it's like" - ], - "then": [ - "* ", - "But at the end of the day I reckon " - ], - "when": [ - "* ", - "It's just unbelievable " - ] - }, - "en-lol": { - "and": [ - "* ", - "AN " - ], - "background": [ - "B4" - ], - "but": [ - "* ", - "BUT " - ], - "examples": [ - "EXAMPLZ" - ], - "feature": [ - "OH HAI" - ], - "given": [ - "* ", - "I CAN HAZ " - ], - "name": "LOLCAT", - "native": "LOLCAT", - "rule": [ - "Rule" - ], - "scenario": [ - "MISHUN" - ], - "scenarioOutline": [ - "MISHUN SRSLY" - ], - "then": [ - "* ", - "DEN " - ], - "when": [ - "* ", - "WEN " - ] - }, - "en-old": { - "and": [ - "* ", - "Ond ", - "7 " - ], - "background": [ - "Aer", - "Ær" - ], - "but": [ - "* ", - "Ac " - ], - "examples": [ - "Se the", - "Se þe", - "Se ðe" - ], - "feature": [ - "Hwaet", - "Hwæt" - ], - "given": [ - "* ", - "Thurh ", - "Þurh ", - "Ðurh " - ], - "name": "Old English", - "native": "Englisc", - "rule": [ - "Rule" - ], - "scenario": [ - "Swa" - ], - "scenarioOutline": [ - "Swa hwaer swa", - "Swa hwær swa" - ], - "then": [ - "* ", - "Tha ", - "Þa ", - "Ða ", - "Tha the ", - "Þa þe ", - "Ða ðe " - ], - "when": [ - "* ", - "Bæþsealf ", - "Bæþsealfa ", - "Bæþsealfe ", - "Ciricæw ", - "Ciricæwe ", - "Ciricæwa " - ] - }, - "en-pirate": { - "and": [ - "* ", - "Aye " - ], - "background": [ - "Yo-ho-ho" - ], - "but": [ - "* ", - "Avast! " - ], - "examples": [ - "Dead men tell no tales" - ], - "feature": [ - "Ahoy matey!" - ], - "given": [ - "* ", - "Gangway! " - ], - "name": "Pirate", - "native": "Pirate", - "rule": [ - "Rule" - ], - "scenario": [ - "Heave to" - ], - "scenarioOutline": [ - "Shiver me timbers" - ], - "then": [ - "* ", - "Let go and haul " - ], - "when": [ - "* ", - "Blimey! " - ] - }, - "en-tx": { - "and": [ - "Come hell or high water " - ], - "background": [ - "Lemme tell y'all a story" - ], - "but": [ - "Well now hold on, I'll you what " - ], - "examples": [ - "Now that's a story longer than a cattle drive in July" - ], - "feature": [ - "This ain’t my first rodeo", - "All gussied up" - ], - "given": [ - "Fixin' to ", - "All git out " - ], - "name": "Texas", - "native": "Texas", - "rule": [ - "Rule " - ], - "scenario": [ - "All hat and no cattle" - ], - "scenarioOutline": [ - "Serious as a snake bite", - "Busy as a hound in flea season" - ], - "then": [ - "There’s no tree but bears some fruit " - ], - "when": [ - "Quick out of the chute " - ] - }, - "eo": { - "and": [ - "* ", - "Kaj " - ], - "background": [ - "Fono" - ], - "but": [ - "* ", - "Sed " - ], - "examples": [ - "Ekzemploj" - ], - "feature": [ - "Trajto" - ], - "given": [ - "* ", - "Donitaĵo ", - "Komence " - ], - "name": "Esperanto", - "native": "Esperanto", - "rule": [ - "Regulo" - ], - "scenario": [ - "Ekzemplo", - "Scenaro", - "Kazo" - ], - "scenarioOutline": [ - "Konturo de la scenaro", - "Skizo", - "Kazo-skizo" - ], - "then": [ - "* ", - "Do " - ], - "when": [ - "* ", - "Se " - ] - }, - "es": { - "and": [ - "* ", - "Y ", - "E " - ], - "background": [ - "Antecedentes" - ], - "but": [ - "* ", - "Pero " - ], - "examples": [ - "Ejemplos" - ], - "feature": [ - "Característica", - "Necesidad del negocio", - "Requisito" - ], - "given": [ - "* ", - "Dado ", - "Dada ", - "Dados ", - "Dadas " - ], - "name": "Spanish", - "native": "español", - "rule": [ - "Regla", - "Regla de negocio" - ], - "scenario": [ - "Ejemplo", - "Escenario" - ], - "scenarioOutline": [ - "Esquema del escenario" - ], - "then": [ - "* ", - "Entonces " - ], - "when": [ - "* ", - "Cuando " - ] - }, - "et": { - "and": [ - "* ", - "Ja " - ], - "background": [ - "Taust" - ], - "but": [ - "* ", - "Kuid " - ], - "examples": [ - "Juhtumid" - ], - "feature": [ - "Omadus" - ], - "given": [ - "* ", - "Eeldades " - ], - "name": "Estonian", - "native": "eesti keel", - "rule": [ - "Reegel" - ], - "scenario": [ - "Juhtum", - "Stsenaarium" - ], - "scenarioOutline": [ - "Raamjuhtum", - "Raamstsenaarium" - ], - "then": [ - "* ", - "Siis " - ], - "when": [ - "* ", - "Kui " - ] - }, - "fa": { - "and": [ - "* ", - "و " - ], - "background": [ - "زمینه" - ], - "but": [ - "* ", - "اما " - ], - "examples": [ - "نمونه ها" - ], - "feature": [ - "وِیژگی" - ], - "given": [ - "* ", - "با فرض " - ], - "name": "Persian", - "native": "فارسی", - "rule": [ - "Rule" - ], - "scenario": [ - "مثال", - "سناریو" - ], - "scenarioOutline": [ - "الگوی سناریو" - ], - "then": [ - "* ", - "آنگاه " - ], - "when": [ - "* ", - "هنگامی " - ] - }, - "fi": { - "and": [ - "* ", - "Ja " - ], - "background": [ - "Tausta" - ], - "but": [ - "* ", - "Mutta " - ], - "examples": [ - "Tapaukset" - ], - "feature": [ - "Ominaisuus" - ], - "given": [ - "* ", - "Oletetaan " - ], - "name": "Finnish", - "native": "suomi", - "rule": [ - "Rule" - ], - "scenario": [ - "Tapaus" - ], - "scenarioOutline": [ - "Tapausaihio" - ], - "then": [ - "* ", - "Niin " - ], - "when": [ - "* ", - "Kun " - ] - }, - "fr": { - "and": [ - "* ", - "Et que ", - "Et qu'", - "Et " - ], - "background": [ - "Contexte" - ], - "but": [ - "* ", - "Mais que ", - "Mais qu'", - "Mais " - ], - "examples": [ - "Exemples" - ], - "feature": [ - "Fonctionnalité" - ], - "given": [ - "* ", - "Soit ", - "Sachant que ", - "Sachant qu'", - "Sachant ", - "Etant donné que ", - "Etant donné qu'", - "Etant donné ", - "Etant donnée ", - "Etant donnés ", - "Etant données ", - "Étant donné que ", - "Étant donné qu'", - "Étant donné ", - "Étant donnée ", - "Étant donnés ", - "Étant données " - ], - "name": "French", - "native": "français", - "rule": [ - "Règle" - ], - "scenario": [ - "Exemple", - "Scénario" - ], - "scenarioOutline": [ - "Plan du scénario", - "Plan du Scénario" - ], - "then": [ - "* ", - "Alors ", - "Donc " - ], - "when": [ - "* ", - "Quand ", - "Lorsque ", - "Lorsqu'" - ] - }, - "ga": { - "and": [ - "* ", - "Agus " - ], - "background": [ - "Cúlra" - ], - "but": [ - "* ", - "Ach " - ], - "examples": [ - "Samplaí" - ], - "feature": [ - "Gné" - ], - "given": [ - "* ", - "Cuir i gcás go ", - "Cuir i gcás nach ", - "Cuir i gcás gur ", - "Cuir i gcás nár " - ], - "name": "Irish", - "native": "Gaeilge", - "rule": [ - "Riail" - ], - "scenario": [ - "Sampla", - "Cás" - ], - "scenarioOutline": [ - "Cás Achomair" - ], - "then": [ - "* ", - "Ansin " - ], - "when": [ - "* ", - "Nuair a ", - "Nuair nach ", - "Nuair ba ", - "Nuair nár " - ] - }, - "gj": { - "and": [ - "* ", - "અને " - ], - "background": [ - "બેકગ્રાઉન્ડ" - ], - "but": [ - "* ", - "પણ " - ], - "examples": [ - "ઉદાહરણો" - ], - "feature": [ - "લક્ષણ", - "વ્યાપાર જરૂર", - "ક્ષમતા" - ], - "given": [ - "* ", - "આપેલ છે " - ], - "name": "Gujarati", - "native": "ગુજરાતી", - "rule": [ - "નિયમ" - ], - "scenario": [ - "ઉદાહરણ", - "સ્થિતિ" - ], - "scenarioOutline": [ - "પરિદ્દશ્ય રૂપરેખા", - "પરિદ્દશ્ય ઢાંચો" - ], - "then": [ - "* ", - "પછી " - ], - "when": [ - "* ", - "ક્યારે " - ] - }, - "gl": { - "and": [ - "* ", - "E " - ], - "background": [ - "Contexto" - ], - "but": [ - "* ", - "Mais ", - "Pero " - ], - "examples": [ - "Exemplos" - ], - "feature": [ - "Característica" - ], - "given": [ - "* ", - "Dado ", - "Dada ", - "Dados ", - "Dadas " - ], - "name": "Galician", - "native": "galego", - "rule": [ - "Rule" - ], - "scenario": [ - "Exemplo", - "Escenario" - ], - "scenarioOutline": [ - "Esbozo do escenario" - ], - "then": [ - "* ", - "Entón ", - "Logo " - ], - "when": [ - "* ", - "Cando " - ] - }, - "he": { - "and": [ - "* ", - "וגם " - ], - "background": [ - "רקע" - ], - "but": [ - "* ", - "אבל " - ], - "examples": [ - "דוגמאות" - ], - "feature": [ - "תכונה" - ], - "given": [ - "* ", - "בהינתן " - ], - "name": "Hebrew", - "native": "עברית", - "rule": [ - "כלל" - ], - "scenario": [ - "דוגמא", - "תרחיש" - ], - "scenarioOutline": [ - "תבנית תרחיש" - ], - "then": [ - "* ", - "אז ", - "אזי " - ], - "when": [ - "* ", - "כאשר " - ] - }, - "hi": { - "and": [ - "* ", - "और ", - "तथा " - ], - "background": [ - "पृष्ठभूमि" - ], - "but": [ - "* ", - "पर ", - "परन्तु ", - "किन्तु " - ], - "examples": [ - "उदाहरण" - ], - "feature": [ - "रूप लेख" - ], - "given": [ - "* ", - "अगर ", - "यदि ", - "चूंकि " - ], - "name": "Hindi", - "native": "हिंदी", - "rule": [ - "नियम" - ], - "scenario": [ - "परिदृश्य" - ], - "scenarioOutline": [ - "परिदृश्य रूपरेखा" - ], - "then": [ - "* ", - "तब ", - "तदा " - ], - "when": [ - "* ", - "जब ", - "कदा " - ] - }, - "hr": { - "and": [ - "* ", - "I " - ], - "background": [ - "Pozadina" - ], - "but": [ - "* ", - "Ali " - ], - "examples": [ - "Primjeri", - "Scenariji" - ], - "feature": [ - "Osobina", - "Mogućnost", - "Mogucnost" - ], - "given": [ - "* ", - "Zadan ", - "Zadani ", - "Zadano ", - "Ukoliko " - ], - "name": "Croatian", - "native": "hrvatski", - "rule": [ - "Rule" - ], - "scenario": [ - "Primjer", - "Scenarij" - ], - "scenarioOutline": [ - "Skica", - "Koncept" - ], - "then": [ - "* ", - "Onda " - ], - "when": [ - "* ", - "Kada ", - "Kad " - ] - }, - "ht": { - "and": [ - "* ", - "Ak ", - "Epi ", - "E " - ], - "background": [ - "Kontèks", - "Istorik" - ], - "but": [ - "* ", - "Men " - ], - "examples": [ - "Egzanp" - ], - "feature": [ - "Karakteristik", - "Mak", - "Fonksyonalite" - ], - "given": [ - "* ", - "Sipoze ", - "Sipoze ke ", - "Sipoze Ke " - ], - "name": "Creole", - "native": "kreyòl", - "rule": [ - "Rule" - ], - "scenario": [ - "Senaryo" - ], - "scenarioOutline": [ - "Plan senaryo", - "Plan Senaryo", - "Senaryo deskripsyon", - "Senaryo Deskripsyon", - "Dyagram senaryo", - "Dyagram Senaryo" - ], - "then": [ - "* ", - "Lè sa a ", - "Le sa a " - ], - "when": [ - "* ", - "Lè ", - "Le " - ] - }, - "hu": { - "and": [ - "* ", - "És " - ], - "background": [ - "Háttér" - ], - "but": [ - "* ", - "De " - ], - "examples": [ - "Példák" - ], - "feature": [ - "Jellemző" - ], - "given": [ - "* ", - "Amennyiben ", - "Adott " - ], - "name": "Hungarian", - "native": "magyar", - "rule": [ - "Szabály" - ], - "scenario": [ - "Példa", - "Forgatókönyv" - ], - "scenarioOutline": [ - "Forgatókönyv vázlat" - ], - "then": [ - "* ", - "Akkor " - ], - "when": [ - "* ", - "Majd ", - "Ha ", - "Amikor " - ] - }, - "id": { - "and": [ - "* ", - "Dan " - ], - "background": [ - "Dasar", - "Latar Belakang" - ], - "but": [ - "* ", - "Tapi ", - "Tetapi " - ], - "examples": [ - "Contoh", - "Misal" - ], - "feature": [ - "Fitur" - ], - "given": [ - "* ", - "Dengan ", - "Diketahui ", - "Diasumsikan ", - "Bila ", - "Jika " - ], - "name": "Indonesian", - "native": "Bahasa Indonesia", - "rule": [ - "Rule", - "Aturan" - ], - "scenario": [ - "Skenario" - ], - "scenarioOutline": [ - "Skenario konsep", - "Garis-Besar Skenario" - ], - "then": [ - "* ", - "Maka ", - "Kemudian " - ], - "when": [ - "* ", - "Ketika " - ] - }, - "is": { - "and": [ - "* ", - "Og " - ], - "background": [ - "Bakgrunnur" - ], - "but": [ - "* ", - "En " - ], - "examples": [ - "Dæmi", - "Atburðarásir" - ], - "feature": [ - "Eiginleiki" - ], - "given": [ - "* ", - "Ef " - ], - "name": "Icelandic", - "native": "Íslenska", - "rule": [ - "Rule" - ], - "scenario": [ - "Atburðarás" - ], - "scenarioOutline": [ - "Lýsing Atburðarásar", - "Lýsing Dæma" - ], - "then": [ - "* ", - "Þá " - ], - "when": [ - "* ", - "Þegar " - ] - }, - "it": { - "and": [ - "* ", - "E ", - "Ed " - ], - "background": [ - "Contesto" - ], - "but": [ - "* ", - "Ma " - ], - "examples": [ - "Esempi" - ], - "feature": [ - "Funzionalità", - "Esigenza di Business", - "Abilità" - ], - "given": [ - "* ", - "Dato ", - "Data ", - "Dati ", - "Date " - ], - "name": "Italian", - "native": "italiano", - "rule": [ - "Regola" - ], - "scenario": [ - "Esempio", - "Scenario" - ], - "scenarioOutline": [ - "Schema dello scenario" - ], - "then": [ - "* ", - "Allora " - ], - "when": [ - "* ", - "Quando " - ] - }, - "ja": { - "and": [ - "* ", - "且つ", - "かつ" - ], - "background": [ - "背景" - ], - "but": [ - "* ", - "然し", - "しかし", - "但し", - "ただし" - ], - "examples": [ - "例", - "サンプル" - ], - "feature": [ - "フィーチャ", - "機能" - ], - "given": [ - "* ", - "前提" - ], - "name": "Japanese", - "native": "日本語", - "rule": [ - "ルール" - ], - "scenario": [ - "シナリオ" - ], - "scenarioOutline": [ - "シナリオアウトライン", - "シナリオテンプレート", - "テンプレ", - "シナリオテンプレ" - ], - "then": [ - "* ", - "ならば" - ], - "when": [ - "* ", - "もし" - ] - }, - "jv": { - "and": [ - "* ", - "Lan " - ], - "background": [ - "Dasar" - ], - "but": [ - "* ", - "Tapi ", - "Nanging ", - "Ananging " - ], - "examples": [ - "Conto", - "Contone" - ], - "feature": [ - "Fitur" - ], - "given": [ - "* ", - "Nalika ", - "Nalikaning " - ], - "name": "Javanese", - "native": "Basa Jawa", - "rule": [ - "Rule" - ], - "scenario": [ - "Skenario" - ], - "scenarioOutline": [ - "Konsep skenario" - ], - "then": [ - "* ", - "Njuk ", - "Banjur " - ], - "when": [ - "* ", - "Manawa ", - "Menawa " - ] - }, - "ka": { - "and": [ - "* ", - "და ", - "ასევე " - ], - "background": [ - "კონტექსტი" - ], - "but": [ - "* ", - "მაგრამ ", - "თუმცა " - ], - "examples": [ - "მაგალითები" - ], - "feature": [ - "თვისება", - "მოთხოვნა" - ], - "given": [ - "* ", - "მოცემული ", - "მოცემულია ", - "ვთქვათ " - ], - "name": "Georgian", - "native": "ქართული", - "rule": [ - "წესი" - ], - "scenario": [ - "მაგალითად", - "მაგალითი", - "მაგ", - "სცენარი" - ], - "scenarioOutline": [ - "სცენარის ნიმუში", - "სცენარის შაბლონი", - "ნიმუში", - "შაბლონი" - ], - "then": [ - "* ", - "მაშინ " - ], - "when": [ - "* ", - "როდესაც ", - "როცა ", - "როგორც კი ", - "თუ " - ] - }, - "kn": { - "and": [ - "* ", - "ಮತ್ತು " - ], - "background": [ - "ಹಿನ್ನೆಲೆ" - ], - "but": [ - "* ", - "ಆದರೆ " - ], - "examples": [ - "ಉದಾಹರಣೆಗಳು" - ], - "feature": [ - "ಹೆಚ್ಚಳ" - ], - "given": [ - "* ", - "ನೀಡಿದ " - ], - "name": "Kannada", - "native": "ಕನ್ನಡ", - "rule": [ - "Rule" - ], - "scenario": [ - "ಉದಾಹರಣೆ", - "ಕಥಾಸಾರಾಂಶ" - ], - "scenarioOutline": [ - "ವಿವರಣೆ" - ], - "then": [ - "* ", - "ನಂತರ " - ], - "when": [ - "* ", - "ಸ್ಥಿತಿಯನ್ನು " - ] - }, - "ko": { - "and": [ - "* ", - "그리고 " - ], - "background": [ - "배경" - ], - "but": [ - "* ", - "하지만 ", - "단 " - ], - "examples": [ - "예" - ], - "feature": [ - "기능" - ], - "given": [ - "* ", - "조건 ", - "먼저 " - ], - "name": "Korean", - "native": "한국어", - "rule": [ - "Rule" - ], - "scenario": [ - "시나리오" - ], - "scenarioOutline": [ - "시나리오 개요" - ], - "then": [ - "* ", - "그러면 " - ], - "when": [ - "* ", - "만일 ", - "만약 " - ] - }, - "lt": { - "and": [ - "* ", - "Ir " - ], - "background": [ - "Kontekstas" - ], - "but": [ - "* ", - "Bet " - ], - "examples": [ - "Pavyzdžiai", - "Scenarijai", - "Variantai" - ], - "feature": [ - "Savybė" - ], - "given": [ - "* ", - "Duota " - ], - "name": "Lithuanian", - "native": "lietuvių kalba", - "rule": [ - "Rule" - ], - "scenario": [ - "Pavyzdys", - "Scenarijus" - ], - "scenarioOutline": [ - "Scenarijaus šablonas" - ], - "then": [ - "* ", - "Tada " - ], - "when": [ - "* ", - "Kai " - ] - }, - "lu": { - "and": [ - "* ", - "an ", - "a " - ], - "background": [ - "Hannergrond" - ], - "but": [ - "* ", - "awer ", - "mä " - ], - "examples": [ - "Beispiller" - ], - "feature": [ - "Funktionalitéit" - ], - "given": [ - "* ", - "ugeholl " - ], - "name": "Luxemburgish", - "native": "Lëtzebuergesch", - "rule": [ - "Rule" - ], - "scenario": [ - "Beispill", - "Szenario" - ], - "scenarioOutline": [ - "Plang vum Szenario" - ], - "then": [ - "* ", - "dann " - ], - "when": [ - "* ", - "wann " - ] - }, - "lv": { - "and": [ - "* ", - "Un " - ], - "background": [ - "Konteksts", - "Situācija" - ], - "but": [ - "* ", - "Bet " - ], - "examples": [ - "Piemēri", - "Paraugs" - ], - "feature": [ - "Funkcionalitāte", - "Fīča" - ], - "given": [ - "* ", - "Kad " - ], - "name": "Latvian", - "native": "latviešu", - "rule": [ - "Rule" - ], - "scenario": [ - "Piemērs", - "Scenārijs" - ], - "scenarioOutline": [ - "Scenārijs pēc parauga" - ], - "then": [ - "* ", - "Tad " - ], - "when": [ - "* ", - "Ja " - ] - }, - "mk-Cyrl": { - "and": [ - "* ", - "И " - ], - "background": [ - "Контекст", - "Содржина" - ], - "but": [ - "* ", - "Но " - ], - "examples": [ - "Примери", - "Сценарија" - ], - "feature": [ - "Функционалност", - "Бизнис потреба", - "Можност" - ], - "given": [ - "* ", - "Дадено ", - "Дадена " - ], - "name": "Macedonian", - "native": "Македонски", - "rule": [ - "Rule" - ], - "scenario": [ - "Пример", - "Сценарио", - "На пример" - ], - "scenarioOutline": [ - "Преглед на сценарија", - "Скица", - "Концепт" - ], - "then": [ - "* ", - "Тогаш " - ], - "when": [ - "* ", - "Кога " - ] - }, - "mk-Latn": { - "and": [ - "* ", - "I " - ], - "background": [ - "Kontekst", - "Sodrzhina" - ], - "but": [ - "* ", - "No " - ], - "examples": [ - "Primeri", - "Scenaria" - ], - "feature": [ - "Funkcionalnost", - "Biznis potreba", - "Mozhnost" - ], - "given": [ - "* ", - "Dadeno ", - "Dadena " - ], - "name": "Macedonian (Latin)", - "native": "Makedonski (Latinica)", - "rule": [ - "Rule" - ], - "scenario": [ - "Scenario", - "Na primer" - ], - "scenarioOutline": [ - "Pregled na scenarija", - "Skica", - "Koncept" - ], - "then": [ - "* ", - "Togash " - ], - "when": [ - "* ", - "Koga " - ] - }, - "mn": { - "and": [ - "* ", - "Мөн ", - "Тэгээд " - ], - "background": [ - "Агуулга" - ], - "but": [ - "* ", - "Гэхдээ ", - "Харин " - ], - "examples": [ - "Тухайлбал" - ], - "feature": [ - "Функц", - "Функционал" - ], - "given": [ - "* ", - "Өгөгдсөн нь ", - "Анх " - ], - "name": "Mongolian", - "native": "монгол", - "rule": [ - "Rule" - ], - "scenario": [ - "Сценар" - ], - "scenarioOutline": [ - "Сценарын төлөвлөгөө" - ], - "then": [ - "* ", - "Тэгэхэд ", - "Үүний дараа " - ], - "when": [ - "* ", - "Хэрэв " - ] - }, - "ne": { - "and": [ - "* ", - "र ", - "अनि " - ], - "background": [ - "पृष्ठभूमी" - ], - "but": [ - "* ", - "तर " - ], - "examples": [ - "उदाहरण", - "उदाहरणहरु" - ], - "feature": [ - "सुविधा", - "विशेषता" - ], - "given": [ - "* ", - "दिइएको ", - "दिएको ", - "यदि " - ], - "name": "Nepali", - "native": "नेपाली", - "rule": [ - "नियम" - ], - "scenario": [ - "परिदृश्य" - ], - "scenarioOutline": [ - "परिदृश्य रूपरेखा" - ], - "then": [ - "* ", - "त्यसपछि ", - "अनी " - ], - "when": [ - "* ", - "जब " - ] - }, - "nl": { - "and": [ - "* ", - "En " - ], - "background": [ - "Achtergrond" - ], - "but": [ - "* ", - "Maar " - ], - "examples": [ - "Voorbeelden" - ], - "feature": [ - "Functionaliteit" - ], - "given": [ - "* ", - "Gegeven ", - "Stel " - ], - "name": "Dutch", - "native": "Nederlands", - "rule": [ - "Regel" - ], - "scenario": [ - "Voorbeeld", - "Scenario" - ], - "scenarioOutline": [ - "Abstract Scenario" - ], - "then": [ - "* ", - "Dan " - ], - "when": [ - "* ", - "Als ", - "Wanneer " - ] - }, - "no": { - "and": [ - "* ", - "Og " - ], - "background": [ - "Bakgrunn" - ], - "but": [ - "* ", - "Men " - ], - "examples": [ - "Eksempler" - ], - "feature": [ - "Egenskap" - ], - "given": [ - "* ", - "Gitt " - ], - "name": "Norwegian", - "native": "norsk", - "rule": [ - "Regel" - ], - "scenario": [ - "Eksempel", - "Scenario" - ], - "scenarioOutline": [ - "Scenariomal", - "Abstrakt Scenario" - ], - "then": [ - "* ", - "Så " - ], - "when": [ - "* ", - "Når " - ] - }, - "pa": { - "and": [ - "* ", - "ਅਤੇ " - ], - "background": [ - "ਪਿਛੋਕੜ" - ], - "but": [ - "* ", - "ਪਰ " - ], - "examples": [ - "ਉਦਾਹਰਨਾਂ" - ], - "feature": [ - "ਖਾਸੀਅਤ", - "ਮੁਹਾਂਦਰਾ", - "ਨਕਸ਼ ਨੁਹਾਰ" - ], - "given": [ - "* ", - "ਜੇਕਰ ", - "ਜਿਵੇਂ ਕਿ " - ], - "name": "Panjabi", - "native": "ਪੰਜਾਬੀ", - "rule": [ - "Rule" - ], - "scenario": [ - "ਉਦਾਹਰਨ", - "ਪਟਕਥਾ" - ], - "scenarioOutline": [ - "ਪਟਕਥਾ ਢਾਂਚਾ", - "ਪਟਕਥਾ ਰੂਪ ਰੇਖਾ" - ], - "then": [ - "* ", - "ਤਦ " - ], - "when": [ - "* ", - "ਜਦੋਂ " - ] - }, - "pl": { - "and": [ - "* ", - "Oraz ", - "I " - ], - "background": [ - "Założenia" - ], - "but": [ - "* ", - "Ale " - ], - "examples": [ - "Przykłady" - ], - "feature": [ - "Właściwość", - "Funkcja", - "Aspekt", - "Potrzeba biznesowa" - ], - "given": [ - "* ", - "Zakładając ", - "Mając ", - "Zakładając, że " - ], - "name": "Polish", - "native": "polski", - "rule": [ - "Zasada", - "Reguła" - ], - "scenario": [ - "Przykład", - "Scenariusz" - ], - "scenarioOutline": [ - "Szablon scenariusza" - ], - "then": [ - "* ", - "Wtedy " - ], - "when": [ - "* ", - "Jeżeli ", - "Jeśli ", - "Gdy ", - "Kiedy " - ] - }, - "pt": { - "and": [ - "* ", - "E " - ], - "background": [ - "Contexto", - "Cenário de Fundo", - "Cenario de Fundo", - "Fundo" - ], - "but": [ - "* ", - "Mas " - ], - "examples": [ - "Exemplos", - "Cenários", - "Cenarios" - ], - "feature": [ - "Funcionalidade", - "Característica", - "Caracteristica" - ], - "given": [ - "* ", - "Dado ", - "Dada ", - "Dados ", - "Dadas " - ], - "name": "Portuguese", - "native": "português", - "rule": [ - "Regra" - ], - "scenario": [ - "Exemplo", - "Cenário", - "Cenario" - ], - "scenarioOutline": [ - "Esquema do Cenário", - "Esquema do Cenario", - "Delineação do Cenário", - "Delineacao do Cenario" - ], - "then": [ - "* ", - "Então ", - "Entao " - ], - "when": [ - "* ", - "Quando " - ] - }, - "ro": { - "and": [ - "* ", - "Si ", - "Și ", - "Şi " - ], - "background": [ - "Context" - ], - "but": [ - "* ", - "Dar " - ], - "examples": [ - "Exemple" - ], - "feature": [ - "Functionalitate", - "Funcționalitate", - "Funcţionalitate" - ], - "given": [ - "* ", - "Date fiind ", - "Dat fiind ", - "Dată fiind", - "Dati fiind ", - "Dați fiind ", - "Daţi fiind " - ], - "name": "Romanian", - "native": "română", - "rule": [ - "Rule" - ], - "scenario": [ - "Exemplu", - "Scenariu" - ], - "scenarioOutline": [ - "Structura scenariu", - "Structură scenariu" - ], - "then": [ - "* ", - "Atunci " - ], - "when": [ - "* ", - "Cand ", - "Când " - ] - }, - "ru": { - "and": [ - "* ", - "И ", - "К тому же ", - "Также " - ], - "background": [ - "Предыстория", - "Контекст" - ], - "but": [ - "* ", - "Но ", - "А ", - "Иначе " - ], - "examples": [ - "Примеры" - ], - "feature": [ - "Функция", - "Функциональность", - "Функционал", - "Свойство", - "Фича" - ], - "given": [ - "* ", - "Допустим ", - "Дано ", - "Пусть " - ], - "name": "Russian", - "native": "русский", - "rule": [ - "Правило" - ], - "scenario": [ - "Пример", - "Сценарий" - ], - "scenarioOutline": [ - "Структура сценария", - "Шаблон сценария" - ], - "then": [ - "* ", - "То ", - "Затем ", - "Тогда " - ], - "when": [ - "* ", - "Когда ", - "Если " - ] - }, - "sk": { - "and": [ - "* ", - "A ", - "A tiež ", - "A taktiež ", - "A zároveň " - ], - "background": [ - "Pozadie" - ], - "but": [ - "* ", - "Ale " - ], - "examples": [ - "Príklady" - ], - "feature": [ - "Požiadavka", - "Funkcia", - "Vlastnosť" - ], - "given": [ - "* ", - "Pokiaľ ", - "Za predpokladu " - ], - "name": "Slovak", - "native": "Slovensky", - "rule": [ - "Rule" - ], - "scenario": [ - "Príklad", - "Scenár" - ], - "scenarioOutline": [ - "Náčrt Scenáru", - "Náčrt Scenára", - "Osnova Scenára" - ], - "then": [ - "* ", - "Tak ", - "Potom " - ], - "when": [ - "* ", - "Keď ", - "Ak " - ] - }, - "sl": { - "and": [ - "In ", - "Ter " - ], - "background": [ - "Kontekst", - "Osnova", - "Ozadje" - ], - "but": [ - "Toda ", - "Ampak ", - "Vendar " - ], - "examples": [ - "Primeri", - "Scenariji" - ], - "feature": [ - "Funkcionalnost", - "Funkcija", - "Možnosti", - "Moznosti", - "Lastnost", - "Značilnost" - ], - "given": [ - "Dano ", - "Podano ", - "Zaradi ", - "Privzeto " - ], - "name": "Slovenian", - "native": "Slovenski", - "rule": [ - "Rule" - ], - "scenario": [ - "Primer", - "Scenarij" - ], - "scenarioOutline": [ - "Struktura scenarija", - "Skica", - "Koncept", - "Oris scenarija", - "Osnutek" - ], - "then": [ - "Nato ", - "Potem ", - "Takrat " - ], - "when": [ - "Ko ", - "Ce ", - "Če ", - "Kadar " - ] - }, - "sr-Cyrl": { - "and": [ - "* ", - "И " - ], - "background": [ - "Контекст", - "Основа", - "Позадина" - ], - "but": [ - "* ", - "Али " - ], - "examples": [ - "Примери", - "Сценарији" - ], - "feature": [ - "Функционалност", - "Могућност", - "Особина" - ], - "given": [ - "* ", - "За дато ", - "За дате ", - "За дати " - ], - "name": "Serbian", - "native": "Српски", - "rule": [ - "Правило" - ], - "scenario": [ - "Сценарио", - "Пример" - ], - "scenarioOutline": [ - "Структура сценарија", - "Скица", - "Концепт" - ], - "then": [ - "* ", - "Онда " - ], - "when": [ - "* ", - "Када ", - "Кад " - ] - }, - "sr-Latn": { - "and": [ - "* ", - "I " - ], - "background": [ - "Kontekst", - "Osnova", - "Pozadina" - ], - "but": [ - "* ", - "Ali " - ], - "examples": [ - "Primeri", - "Scenariji" - ], - "feature": [ - "Funkcionalnost", - "Mogućnost", - "Mogucnost", - "Osobina" - ], - "given": [ - "* ", - "Za dato ", - "Za date ", - "Za dati " - ], - "name": "Serbian (Latin)", - "native": "Srpski (Latinica)", - "rule": [ - "Pravilo" - ], - "scenario": [ - "Scenario", - "Primer" - ], - "scenarioOutline": [ - "Struktura scenarija", - "Skica", - "Koncept" - ], - "then": [ - "* ", - "Onda " - ], - "when": [ - "* ", - "Kada ", - "Kad " - ] - }, - "sv": { - "and": [ - "* ", - "Och " - ], - "background": [ - "Bakgrund" - ], - "but": [ - "* ", - "Men " - ], - "examples": [ - "Exempel" - ], - "feature": [ - "Egenskap" - ], - "given": [ - "* ", - "Givet " - ], - "name": "Swedish", - "native": "Svenska", - "rule": [ - "Regel" - ], - "scenario": [ - "Scenario" - ], - "scenarioOutline": [ - "Abstrakt Scenario", - "Scenariomall" - ], - "then": [ - "* ", - "Så " - ], - "when": [ - "* ", - "När " - ] - }, - "ta": { - "and": [ - "* ", - "மேலும் ", - "மற்றும் " - ], - "background": [ - "பின்னணி" - ], - "but": [ - "* ", - "ஆனால் " - ], - "examples": [ - "எடுத்துக்காட்டுகள்", - "காட்சிகள்", - "நிலைமைகளில்" - ], - "feature": [ - "அம்சம்", - "வணிக தேவை", - "திறன்" - ], - "given": [ - "* ", - "கொடுக்கப்பட்ட " - ], - "name": "Tamil", - "native": "தமிழ்", - "rule": [ - "Rule" - ], - "scenario": [ - "உதாரணமாக", - "காட்சி" - ], - "scenarioOutline": [ - "காட்சி சுருக்கம்", - "காட்சி வார்ப்புரு" - ], - "then": [ - "* ", - "அப்பொழுது " - ], - "when": [ - "* ", - "எப்போது " - ] - }, - "th": { - "and": [ - "* ", - "และ " - ], - "background": [ - "แนวคิด" - ], - "but": [ - "* ", - "แต่ " - ], - "examples": [ - "ชุดของตัวอย่าง", - "ชุดของเหตุการณ์" - ], - "feature": [ - "โครงหลัก", - "ความต้องการทางธุรกิจ", - "ความสามารถ" - ], - "given": [ - "* ", - "กำหนดให้ " - ], - "name": "Thai", - "native": "ไทย", - "rule": [ - "Rule" - ], - "scenario": [ - "เหตุการณ์" - ], - "scenarioOutline": [ - "สรุปเหตุการณ์", - "โครงสร้างของเหตุการณ์" - ], - "then": [ - "* ", - "ดังนั้น " - ], - "when": [ - "* ", - "เมื่อ " - ] - }, - "te": { - "and": [ - "* ", - "మరియు " - ], - "background": [ - "నేపథ్యం" - ], - "but": [ - "* ", - "కాని " - ], - "examples": [ - "ఉదాహరణలు" - ], - "feature": [ - "గుణము" - ], - "given": [ - "* ", - "చెప్పబడినది " - ], - "name": "Telugu", - "native": "తెలుగు", - "rule": [ - "Rule" - ], - "scenario": [ - "ఉదాహరణ", - "సన్నివేశం" - ], - "scenarioOutline": [ - "కథనం" - ], - "then": [ - "* ", - "అప్పుడు " - ], - "when": [ - "* ", - "ఈ పరిస్థితిలో " - ] - }, - "tlh": { - "and": [ - "* ", - "'ej ", - "latlh " - ], - "background": [ - "mo'" - ], - "but": [ - "* ", - "'ach ", - "'a " - ], - "examples": [ - "ghantoH", - "lutmey" - ], - "feature": [ - "Qap", - "Qu'meH 'ut", - "perbogh", - "poQbogh malja'", - "laH" - ], - "given": [ - "* ", - "ghu' noblu' ", - "DaH ghu' bejlu' " - ], - "name": "Klingon", - "native": "tlhIngan", - "rule": [ - "Rule" - ], - "scenario": [ - "lut" - ], - "scenarioOutline": [ - "lut chovnatlh" - ], - "then": [ - "* ", - "vaj " - ], - "when": [ - "* ", - "qaSDI' " - ] - }, - "tr": { - "and": [ - "* ", - "Ve " - ], - "background": [ - "Geçmiş" - ], - "but": [ - "* ", - "Fakat ", - "Ama " - ], - "examples": [ - "Örnekler" - ], - "feature": [ - "Özellik" - ], - "given": [ - "* ", - "Diyelim ki " - ], - "name": "Turkish", - "native": "Türkçe", - "rule": [ - "Kural" - ], - "scenario": [ - "Örnek", - "Senaryo" - ], - "scenarioOutline": [ - "Senaryo taslağı" - ], - "then": [ - "* ", - "O zaman " - ], - "when": [ - "* ", - "Eğer ki " - ] - }, - "tt": { - "and": [ - "* ", - "Һәм ", - "Вә " - ], - "background": [ - "Кереш" - ], - "but": [ - "* ", - "Ләкин ", - "Әмма " - ], - "examples": [ - "Үрнәкләр", - "Мисаллар" - ], - "feature": [ - "Мөмкинлек", - "Үзенчәлеклелек" - ], - "given": [ - "* ", - "Әйтик " - ], - "name": "Tatar", - "native": "Татарча", - "rule": [ - "Rule" - ], - "scenario": [ - "Сценарий" - ], - "scenarioOutline": [ - "Сценарийның төзелеше" - ], - "then": [ - "* ", - "Нәтиҗәдә " - ], - "when": [ - "* ", - "Әгәр " - ] - }, - "uk": { - "and": [ - "* ", - "І ", - "А також ", - "Та " - ], - "background": [ - "Передумова" - ], - "but": [ - "* ", - "Але " - ], - "examples": [ - "Приклади" - ], - "feature": [ - "Функціонал" - ], - "given": [ - "* ", - "Припустимо ", - "Припустимо, що ", - "Нехай ", - "Дано " - ], - "name": "Ukrainian", - "native": "Українська", - "rule": [ - "Rule" - ], - "scenario": [ - "Приклад", - "Сценарій" - ], - "scenarioOutline": [ - "Структура сценарію" - ], - "then": [ - "* ", - "То ", - "Тоді " - ], - "when": [ - "* ", - "Якщо ", - "Коли " - ] - }, - "ur": { - "and": [ - "* ", - "اور " - ], - "background": [ - "پس منظر" - ], - "but": [ - "* ", - "لیکن " - ], - "examples": [ - "مثالیں" - ], - "feature": [ - "صلاحیت", - "کاروبار کی ضرورت", - "خصوصیت" - ], - "given": [ - "* ", - "اگر ", - "بالفرض ", - "فرض کیا " - ], - "name": "Urdu", - "native": "اردو", - "rule": [ - "Rule" - ], - "scenario": [ - "منظرنامہ" - ], - "scenarioOutline": [ - "منظر نامے کا خاکہ" - ], - "then": [ - "* ", - "پھر ", - "تب " - ], - "when": [ - "* ", - "جب " - ] - }, - "uz": { - "and": [ - "* ", - "Ва " - ], - "background": [ - "Тарих" - ], - "but": [ - "* ", - "Лекин ", - "Бирок ", - "Аммо " - ], - "examples": [ - "Мисоллар" - ], - "feature": [ - "Функционал" - ], - "given": [ - "* ", - "Belgilangan " - ], - "name": "Uzbek", - "native": "Узбекча", - "rule": [ - "Rule" - ], - "scenario": [ - "Сценарий" - ], - "scenarioOutline": [ - "Сценарий структураси" - ], - "then": [ - "* ", - "Унда " - ], - "when": [ - "* ", - "Агар " - ] - }, - "vi": { - "and": [ - "* ", - "Và " - ], - "background": [ - "Bối cảnh" - ], - "but": [ - "* ", - "Nhưng " - ], - "examples": [ - "Dữ liệu" - ], - "feature": [ - "Tính năng" - ], - "given": [ - "* ", - "Biết ", - "Cho " - ], - "name": "Vietnamese", - "native": "Tiếng Việt", - "rule": [ - "Quy tắc" - ], - "scenario": [ - "Tình huống", - "Kịch bản" - ], - "scenarioOutline": [ - "Khung tình huống", - "Khung kịch bản" - ], - "then": [ - "* ", - "Thì " - ], - "when": [ - "* ", - "Khi " - ] - }, - "zh-CN": { - "and": [ - "* ", - "而且", - "并且", - "同时" - ], - "background": [ - "背景" - ], - "but": [ - "* ", - "但是" - ], - "examples": [ - "例子" - ], - "feature": [ - "功能" - ], - "given": [ - "* ", - "假如", - "假设", - "假定" - ], - "name": "Chinese simplified", - "native": "简体中文", - "rule": [ - "Rule", - "规则" - ], - "scenario": [ - "场景", - "剧本" - ], - "scenarioOutline": [ - "场景大纲", - "剧本大纲" - ], - "then": [ - "* ", - "那么" - ], - "when": [ - "* ", - "当" - ] - }, - "ml": { - "and": [ - "* ", - "ഒപ്പം" - ], - "background": [ - "പശ്ചാത്തലം" - ], - "but": [ - "* ", - "പക്ഷേ" - ], - "examples": [ - "ഉദാഹരണങ്ങൾ" - ], - "feature": [ - "സവിശേഷത" - ], - "given": [ - "* ", - "നൽകിയത്" - ], - "name": "Malayalam", - "native": "മലയാളം", - "rule": [ - "നിയമം" - ], - "scenario": [ - "രംഗം" - ], - "scenarioOutline": [ - "സാഹചര്യത്തിന്റെ രൂപരേഖ" - ], - "then": [ - "* ", - "പിന്നെ" - ], - "when": [ - "എപ്പോൾ" - ] - }, - "zh-TW": { - "and": [ - "* ", - "而且", - "並且", - "同時" - ], - "background": [ - "背景" - ], - "but": [ - "* ", - "但是" - ], - "examples": [ - "例子" - ], - "feature": [ - "功能" - ], - "given": [ - "* ", - "假如", - "假設", - "假定" - ], - "name": "Chinese traditional", - "native": "繁體中文", - "rule": [ - "Rule" - ], - "scenario": [ - "場景", - "劇本" - ], - "scenarioOutline": [ - "場景大綱", - "劇本大綱" - ], - "then": [ - "* ", - "那麼" - ], - "when": [ - "* ", - "當" - ] - }, - "mr": { - "and": [ - "* ", - "आणि ", - "तसेच " - ], - "background": [ - "पार्श्वभूमी" - ], - "but": [ - "* ", - "पण ", - "परंतु " - ], - "examples": [ - "उदाहरण" - ], - "feature": [ - "वैशिष्ट्य", - "सुविधा" - ], - "given": [ - "* ", - "जर", - "दिलेल्या प्रमाणे " - ], - "name": "Marathi", - "native": "मराठी", - "rule": [ - "नियम" - ], - "scenario": [ - "परिदृश्य" - ], - "scenarioOutline": [ - "परिदृश्य रूपरेखा" - ], - "then": [ - "* ", - "मग ", - "तेव्हा " - ], - "when": [ - "* ", - "जेव्हा " - ] - }, - "amh": { - "and": [ - "* ", - "እና " - ], - "background": [ - "ቅድመ ሁኔታ", - "መነሻ", - "መነሻ ሀሳብ" - ], - "but": [ - "* ", - "ግን " - ], - "examples": [ - "ምሳሌዎች", - "ሁናቴዎች" - ], - "feature": [ - "ስራ", - "የተፈለገው ስራ", - "የሚፈለገው ድርጊት" - ], - "given": [ - "* ", - "የተሰጠ " - ], - "name": "Amharic", - "native": "አማርኛ", - "rule": [ - "ህግ" - ], - "scenario": [ - "ምሳሌ", - "ሁናቴ" - ], - "scenarioOutline": [ - "ሁናቴ ዝርዝር", - "ሁናቴ አብነት" - ], - "then": [ - "* ", - "ከዚያ " - ], - "when": [ - "* ", - "መቼ " - ] - } -} diff --git a/dotnet/Makefile b/dotnet/Makefile index b68d7bc8a..b11b01482 100644 --- a/dotnet/Makefile +++ b/dotnet/Makefile @@ -1,6 +1,5 @@ SHELL := /usr/bin/env bash -GHERKIN_LANGUAGES_JSON = Gherkin/gherkin-languages.json GHERKIN_PARSER = Gherkin/Parser.cs GHERKIN_RAZOR = gherkin-csharp.razor SOURCE_FILES = $(shell find . -name "*.cs" | grep -v $(GHERKIN_PARSER)) @@ -27,10 +26,11 @@ generate: $(GHERKIN_PARSER) ## Generate gherkin parser files clean-generate: ## Remove generated Gherkin parser files ## Generate gherkin parser files rm -f $(GHERKIN_PARSER) -copy-gherkin-languages: $(GHERKIN_LANGUAGES_JSON) ## Copy gherkin-languages.json and/or generate derived files +copy-gherkin-languages: ## Copy gherkin-languages.json and/or generate derived files + echo "Nothing to do" clean-gherkin-languages: ## Remove gherkin-languages.json and any derived files - rm -f $(GHERKIN_LANGUAGES_JSON) + echo "Nothing to do" clean: ## Remove all build artifacts and files generated by the acceptance tests rm -f .built @@ -51,9 +51,6 @@ Gherkin.Specs/bin/Debug/net8.0/Gherkin.Specs.dll: $(GHERKIN_PARSER): $(GHERKIN_RAZOR) ../gherkin.berp berp -g ../gherkin.berp -t $< -o $@ --noBOM -$(GHERKIN_LANGUAGES_JSON): - cp ../gherkin-languages.json $@ - acceptance/testdata/%.tokens: ../testdata/% ../testdata/%.tokens mkdir -p $(@D) $(GHERKIN_GENERATE_TOKENS) $< > $@