[libtest-bdd-cucumber-perl] 20/52: extracted i18n code from the parser and put it in a dedicated module
Intrigeri
intrigeri at moszumanska.debian.org
Thu Jun 19 10:18:33 UTC 2014
This is an automated email from the git hooks/post-receive script.
intrigeri pushed a commit to annotated tag 0.19
in repository libtest-bdd-cucumber-perl.
commit 9991bfdab9fb6ca98c550b23f1e6d8356b53ed8e
Author: glauschwuffel <glauschwuffel at nomaden.org>
Date: Mon May 19 20:56:26 2014 +0200
extracted i18n code from the parser and put it in a dedicated module
---
lib/Test/BDD/Cucumber/{Parser.pm => I18n.pm} | 340 +-------------
lib/Test/BDD/Cucumber/Parser.pm | 674 +--------------------------
2 files changed, 16 insertions(+), 998 deletions(-)
diff --git a/lib/Test/BDD/Cucumber/Parser.pm b/lib/Test/BDD/Cucumber/I18n.pm
similarity index 67%
copy from lib/Test/BDD/Cucumber/Parser.pm
copy to lib/Test/BDD/Cucumber/I18n.pm
index e234f4c..0eb6e4d 100644
--- a/lib/Test/BDD/Cucumber/Parser.pm
+++ b/lib/Test/BDD/Cucumber/I18n.pm
@@ -1,347 +1,33 @@
-package Test::BDD::Cucumber::Parser;
-
-=head1 NAME
-
-Test::BDD::Cucumber::Parser - Parse Feature files
-
-=head1 DESCRIPTION
-
-Parse Feature files in to a set of data classes
-
-=head1 SYNOPSIS
-
- # Returns a Test::BDD::Cucumber::Model::Feature object
- my $feature = Test::BDD::Cucumber::Parser->parse_file(
- 't/data/features/basic_parse.feature' );
-
-=head1 METHODS
-
-=head2 parse_string
-
-=head2 parse_file
-
-Both methods accept a single string as their argument, and return a
-L<Test::BDD::Cucumber::Model::Feature> object on success.
-
-=cut
+package Test::BDD::Cucumber::I18n;
use strict;
use warnings;
-use Ouch;
-use utf8;
use Encode qw(encode);
use JSON::XS;
-use File::Slurp;
-
-use Test::BDD::Cucumber::Model::Document;
-use Test::BDD::Cucumber::Model::Feature;
-use Test::BDD::Cucumber::Model::Scenario;
-use Test::BDD::Cucumber::Model::Step;
-use Test::BDD::Cucumber::Model::TagSpec;
-
-# https://github.com/cucumber/cucumber/wiki/Multiline-Step-Arguments
-# https://github.com/cucumber/cucumber/wiki/Scenario-outlines
+use utf8;
-# Parse keywords hash for all supported languages from DATA segment
+# Parse keywords hash for all supported languages from the DATA segment
my $json = join '', (<DATA>);
my $json_utf8 = encode('UTF-8', $json);
-my $LANGUAGES = decode_json( $json_utf8 );
-
-sub parse_string {
- my ( $class, $string, $tag_scheme ) = @_;
-
- return $class->_construct( Test::BDD::Cucumber::Model::Document->new({
- content => $string
- }), $tag_scheme );
-}
-
-sub parse_file {
- my ( $class, $string, $tag_scheme) = @_;
- return $class->_construct( Test::BDD::Cucumber::Model::Document->new({
- content => scalar( read_file( $string, { binmode => ':utf8' } ) ),
- filename => $string
- }), $tag_scheme );
-}
-
-sub _construct {
- my ( $class, $document, $tag_scheme ) = @_;
-
- my $feature = Test::BDD::Cucumber::Model::Feature->new({ document => $document });
- my @lines = $class->_remove_next_blanks( @{ $document->lines } );
-
- $feature->language($class->_extract_language(\@lines));
-
- my $self = { keywords => $LANGUAGES->{$feature->language} };
- bless $self, $class;
-
- $self->_extract_scenarios(
- $self->_extract_conditions_of_satisfaction(
- $self->_extract_feature_name(
- $feature, @lines
- )));
-
- return $feature;
-}
-
-sub _extract_language {
- my ($self, $lines)=@_;
-
- # return default language if we don't see the language directive on the first line
- return 'en' unless $lines->[0]->raw_content =~ m{^\s*#\s*language:\s+(.+)$};
-
- # remove the language directive if we saw it ...
- shift @$lines;
-
- # ... and return the language it declared
- return $1;
-}
-
-sub _remove_next_blanks {
- my ( $self, @lines ) = @_;
- while ($lines[0] && $lines[0]->is_blank) {
- shift( @lines );
- }
- return @lines;
-}
-
-sub _extract_feature_name {
- my ( $self, $feature, @lines ) = @_;
- my @feature_tags = ();
-
- while ( my $line = shift( @lines ) ) {
- next if $line->is_comment;
- last if $line->is_blank;
-
- if ( $line->content =~ m/^(?:$self->{keywords}->{feature}): (.+)/ ) {
- $feature->name( $1 );
- $feature->name_line( $line );
- $feature->tags( \@feature_tags );
-
- last;
-
- # Feature-level tags
- } elsif ( $line->content =~ m/^\s*\@\w/ ) {
- my @tags = $line->content =~ m/\@([^\s]+)/g;
- push( @feature_tags, @tags );
-
- } else {
- ouch 'parse_error', "Malformed feature line", $line;
- }
- }
-
- return $feature, $self->_remove_next_blanks( @lines );
-}
-
-sub _extract_conditions_of_satisfaction {
- my ( $self, $feature, @lines ) = @_;
-
- while ( my $line = shift( @lines ) ) {
- next if $line->is_comment || $line->is_blank;
-
- if ( $line->content =~ m/^((?:$self->{keywords}->{background}):|(?:$self->{keywords}->{scenario}):|@)/ ) {
- unshift( @lines, $line );
- last;
- } else {
- push( @{ $feature->satisfaction }, $line );
- }
- }
-
- return $feature, $self->_remove_next_blanks( @lines );
-}
-
-sub _extract_scenarios {
- my ( $self, $feature, @lines ) = @_;
- my $scenarios = 0;
- my @scenario_tags;
-
- while ( my $line = shift( @lines ) ) {
- next if $line->is_comment || $line->is_blank;
-
- if ( $line->content =~ m/^((?:$self->{keywords}->{background})|(?:$self->{keywords}->{scenario}))(?: Outline)?: ?(.+)?/ ) {
- my ( $type, $name ) = ( $1, $2 );
-
- # Only one background section, and it must be the first
- if ( $scenarios++ && $type =~ m/^($self->{keywords}->{background})/ ) {
- ouch 'parse_error', "Background not allowed after scenarios",
- $line;
- }
-
- # Create the scenario
- my $scenario = Test::BDD::Cucumber::Model::Scenario->new({
- ( $name ? ( name => $name ) : () ),
- background => $type =~ m/^($self->{keywords}->{background})/ ? 1 : 0,
- line => $line,
- tags => [@{$feature->tags}, @scenario_tags]
- });
- @scenario_tags = ();
+my $keywords = decode_json( $json_utf8 );
- # Attempt to populate it
- @lines = $self->_extract_steps( $feature, $scenario, @lines );
-
- if ( $type =~ m/^($self->{keywords}->{background})/ ) {
- $feature->background( $scenario );
- } else {
- push( @{ $feature->scenarios }, $scenario );
- }
-
- # Scenario-level tags
- } elsif ( $line->content =~ m/^\s*\@\w/ ) {
- my @tags = $line->content =~ m/\@([^\s]+)/g;
- push( @scenario_tags, @tags );
-
- } else {
- ouch 'parse_error', "Malformed scenario line", $line;
- }
- }
-
- return $feature, $self->_remove_next_blanks( @lines );
+sub languages {
+ return keys $keywords;
}
-sub _extract_steps {
- my ( $self, $feature, $scenario, @lines ) = @_;
-
- my @givens = split( /\|/, $self->{keywords}->{given} );
- my $last_verb = $givens[-1];
-
- while ( my $line = shift( @lines ) ) {
- next if $line->is_comment;
- last if $line->is_blank;
-
- # Conventional step?
- if ( $line->content =~ m/^((?:$self->{keywords}->{given})|(?:$self->{keywords}->{and})|(?:$self->{keywords}->{when})|(?:$self->{keywords}->{then})|(?:$self->{keywords}->{but})) (.+)/ ) {
- my ( $verb, $text ) = ( $1, $2 );
- my $original_verb = $verb;
- $verb = 'Given' if $verb =~ m/($self->{keywords}->{given})/;
- $verb = 'When' if $verb =~ m/($self->{keywords}->{when})/;
- $verb = 'Then' if $verb =~ m/($self->{keywords}->{then})/;
- $verb = $last_verb if $verb =~ m/^($self->{keywords}->{and})/ or $verb =~ m/^($self->{keywords}->{but})/;
- $last_verb = $verb;
-
- my $step = Test::BDD::Cucumber::Model::Step->new({
- text => $text,
- verb => $verb,
- line => $line,
- verb_original => $original_verb,
- });
-
- @lines = $self->_extract_step_data(
- $feature, $scenario, $step, @lines );
-
- push( @{ $scenario->steps }, $step );
-
- # Outline data block...
- } elsif ( $line->content =~ m/^($self->{keywords}->{examples}):$/ ) {
- return $self->_extract_table( 6, $scenario,
- $self->_remove_next_blanks( @lines ));
- } else {
- warn $line->content;
- ouch 'parse_error', "Malformed step line", $line;
- }
- }
-
- return $self->_remove_next_blanks( @lines );
+sub has_language {
+ my ($language) = @_;
+ exists $keywords->{$language};
}
-sub _extract_step_data {
- my ( $self, $feature, $scenario, $step, @lines ) = @_;
- return unless @lines;
-
- if ( $lines[0]->content eq '"""' ) {
- return $self->_extract_multiline_string(
- $feature, $scenario, $step, @lines );
- } elsif ( $lines[0]->content =~ m/^\s*\|/ ) {
- return $self->_extract_table( 6, $step, @lines );
- } else {
- return @lines;
- }
+sub keywords {
+ my ($language) = @_;
+ return unless has_language($language);
+ return $keywords->{$language};
}
-sub _extract_multiline_string {
- my ( $self, $feature, $scenario, $step, @lines ) = @_;
-
- my $data = '';
- my $start = shift( @lines );
- my $indent = $start->indent;
-
- # Check we still have the minimum indentation
- while ( my $line = shift( @lines ) ) {
-
- if ( $line->content eq '"""' ) {
- $step->data( $data );
- return $self->_remove_next_blanks( @lines );
- }
-
- my $content = $line->content_remove_indentation( $indent );
- # Unescape it
- $content =~ s/\\(.)/$1/g;
- push( @{ $step->data_as_strings }, $content );
- $content .= "\n";
- $data .= $content;
- }
-
- return;
-}
-
-sub _extract_table {
- my ( $self, $indent, $target, @lines ) = @_;
- my @columns;
-
- my $data = [];
- $target->data($data);
-
- while ( my $line = shift( @lines ) ) {
- next if $line->is_comment;
- return ($line, @lines) if index( $line->content, '|' );
-
- my @rows = $self->_pipe_array( $line->content );
- if ( $target->can('data_as_strings') ) {
- my $t_content = $line->content;
- $t_content =~ s/^\s+//;
- push( @{ $target->data_as_strings }, $t_content );
- }
-
- if ( @columns ) {
- ouch 'parse_error', "Inconsistent number of rows in table", $line
- unless @rows == @columns;
- $target->columns( [ @columns ] ) if $target->can('columns');
- my $i = 0;
- my %data_hash = map { $columns[$i++] => $_ } @rows;
- push( @$data, \%data_hash );
- } else {
- @columns = @rows;
- }
- }
-
- return;
-}
-
-sub _pipe_array {
- my ( $self, $string ) = @_;
- my @atoms = split(/\|/, $string);
- shift( @atoms );
- return map { $_ =~ s/^\s+//; $_ =~ s/\s+$//; $_ } @atoms;
-}
-
-1;
-
-=head1 ERROR HANDLING
-
-L<Test::BDD::Cucumber> uses L<Ouch> for exception handling. Errors originating in this
-class tend to have a code of C<parse_error> and a L<Test::BDD::Cucumber::Model::Line>
-object for data.
-
-=head1 AUTHOR
-
-Peter Sergeant C<pete at clueball.com>
-
-=head1 LICENSE
-
-Copyright 2011, Peter Sergeant; Licensed under the same terms as Perl
-
-=cut
-
__DATA__
{
"en": {
diff --git a/lib/Test/BDD/Cucumber/Parser.pm b/lib/Test/BDD/Cucumber/Parser.pm
index e234f4c..1e974b5 100644
--- a/lib/Test/BDD/Cucumber/Parser.pm
+++ b/lib/Test/BDD/Cucumber/Parser.pm
@@ -29,9 +29,6 @@ use strict;
use warnings;
use Ouch;
-use utf8;
-use Encode qw(encode);
-use JSON::XS;
use File::Slurp;
use Test::BDD::Cucumber::Model::Document;
@@ -39,15 +36,11 @@ use Test::BDD::Cucumber::Model::Feature;
use Test::BDD::Cucumber::Model::Scenario;
use Test::BDD::Cucumber::Model::Step;
use Test::BDD::Cucumber::Model::TagSpec;
+use Test::BDD::Cucumber::I18n;
# https://github.com/cucumber/cucumber/wiki/Multiline-Step-Arguments
# https://github.com/cucumber/cucumber/wiki/Scenario-outlines
-# Parse keywords hash for all supported languages from DATA segment
-my $json = join '', (<DATA>);
-my $json_utf8 = encode('UTF-8', $json);
-my $LANGUAGES = decode_json( $json_utf8 );
-
sub parse_string {
my ( $class, $string, $tag_scheme ) = @_;
@@ -72,7 +65,8 @@ sub _construct {
$feature->language($class->_extract_language(\@lines));
- my $self = { keywords => $LANGUAGES->{$feature->language} };
+ my $self = { keywords =>
+ Test::BDD::Cucumber::I18n::keywords($feature->language) };
bless $self, $class;
$self->_extract_scenarios(
@@ -341,665 +335,3 @@ Peter Sergeant C<pete at clueball.com>
Copyright 2011, Peter Sergeant; Licensed under the same terms as Perl
=cut
-
-__DATA__
-{
- "en": {
- "name": "English",
- "native": "English",
- "feature": "Feature|Business Need|Ability",
- "background": "Background",
- "scenario": "Scenario",
- "scenario_outline": "Scenario Outline|Scenario Template",
- "examples": "Examples|Scenarios",
- "given": "[*]|Given",
- "when": "[*]|When",
- "then": "[*]|Then",
- "and": "[*]|And",
- "but": "[*]|But"
- },
- "ar": {
- "name": "Arabic",
- "native": "العربية",
- "feature": "خاصية",
- "background": "الخلفية",
- "scenario": "سيناريو",
- "scenario_outline": "سيناريو مخطط",
- "examples": "امثلة",
- "given": "[*]|بفرض",
- "when": "[*]|متى|عندما",
- "then": "[*]|اذاً|ثم",
- "and": "[*]|و",
- "but": "[*]|لكن"
- },
- "bm": {
- "name": "Malay",
- "native": "Bahasa Melayu",
- "feature": "Fungsi",
- "background": "Latar Belakang",
- "scenario": "Senario",
- "scenario_outline": "Menggariskan Senario ",
- "examples": "Contoh ",
- "given": "[*]|Bagi",
- "when": "[*]|Apabila",
- "then": "[*]|Kemudian",
- "and": "[*]|Dan",
- "but": "[*]|Tetapi"
- },
- "bg": {
- "name": "Bulgarian",
- "native": "български",
- "feature": "Функционалност",
- "background": "Предистория",
- "scenario": "Сценарий",
- "scenario_outline": "Рамка на сценарий",
- "examples": "Примери",
- "given": "[*]|Дадено",
- "when": "[*]|Когато",
- "then": "[*]|То",
- "and": "[*]|И",
- "but": "[*]|Но"
- },
- "ca": {
- "name": "Catalan",
- "native": "català",
- "background": "Rerefons|Antecedents",
- "feature": "Característica|Funcionalitat",
- "scenario": "Escenari",
- "scenario_outline": "Esquema de l'escenari",
- "examples": "Exemples",
- "given": "[*]|Donat|Donada|Atès|Atesa",
- "when": "[*]|Quan",
- "then": "[*]|Aleshores|Cal",
- "and": "[*]|I",
- "but": "[*]|Però"
- },
- "cy-GB": {
- "name": "Welsh",
- "native": "Cymraeg",
- "background": "Cefndir",
- "feature": "Arwedd",
- "scenario": "Scenario",
- "scenario_outline": "Scenario Amlinellol",
- "examples": "Enghreifftiau",
- "given": "[*]|Anrhegedig a",
- "when": "[*]|Pryd",
- "then": "[*]|Yna",
- "and": "[*]|A",
- "but": "[*]|Ond"
- },
- "cs": {
- "name": "Czech",
- "native": "Česky",
- "feature": "Požadavek",
- "background": "Pozadí|Kontext",
- "scenario": "Scénář",
- "scenario_outline": "Náčrt Scénáře|Osnova scénáře",
- "examples": "Příklady",
- "given": "[*]|Pokud|Za předpokladu",
- "when": "[*]|Když",
- "then": "[*]|Pak",
- "and": "[*]|A také|A",
- "but": "[*]|Ale"
- },
- "da": {
- "name": "Danish",
- "native": "dansk",
- "feature": "Egenskab",
- "background": "Baggrund",
- "scenario": "Scenarie",
- "scenario_outline": "Abstrakt Scenario",
- "examples": "Eksempler",
- "given": "[*]|Givet",
- "when": "[*]|Når",
- "then": "[*]|Så",
- "and": "[*]|Og",
- "but": "[*]|Men"
- },
- "de": {
- "name": "German",
- "native": "Deutsch",
- "feature": "Funktionalität",
- "background": "Grundlage",
- "scenario": "Szenario",
- "scenario_outline": "Szenariogrundriss",
- "examples": "Beispiele",
- "given": "[*]|Angenommen|Gegeben sei",
- "when": "[*]|Wenn",
- "then": "[*]|Dann",
- "and": "[*]|Und",
- "but": "[*]|Aber"
- },
- "en-au": {
- "name": "Australian",
- "native": "Australian",
- "feature": "Pretty much",
- "background": "First off",
- "scenario": "Awww, look mate",
- "scenario_outline": "Reckon it's like",
- "examples": "You'll wanna",
- "given": "[*]|Y'know",
- "when": "[*]|It's just unbelievable",
- "then": "[*]|But at the end of the day I reckon",
- "and": "[*]|Too right",
- "but": "[*]|Yeah nah"
- },
- "en-lol": {
- "name": "LOLCAT",
- "native": "LOLCAT",
- "feature": "OH HAI",
- "background": "B4",
- "scenario": "MISHUN",
- "scenario_outline": "MISHUN SRSLY",
- "examples": "EXAMPLZ",
- "given": "[*]|I CAN HAZ",
- "when": "[*]|WEN",
- "then": "[*]|DEN",
- "and": "[*]|AN",
- "but": "[*]|BUT"
- },
- "en-pirate": {
- "name": "Pirate",
- "native": "Pirate",
- "feature": "Ahoy matey!",
- "background": "Yo-ho-ho",
- "scenario": "Heave to",
- "scenario_outline": "Shiver me timbers",
- "examples": "Dead men tell no tales",
- "given": "[*]|Gangway!",
- "when": "[*]|Blimey!",
- "then": "[*]|Let go and haul",
- "and": "[*]|Aye",
- "but": "[*]|Avast!"
- },
- "en-Scouse": {
- "name": "Scouse",
- "native": "Scouse",
- "feature": "Feature",
- "background": "Dis is what went down",
- "scenario": "The thing of it is",
- "scenario_outline": "Wharrimean is",
- "examples": "Examples",
- "given": "[*]|Givun|Youse know when youse got",
- "when": "[*]|Wun|Youse know like when",
- "then": "[*]|Dun|Den youse gotta",
- "and": "[*]|An",
- "but": "[*]|Buh"
- },
- "en-tx": {
- "name": "Texan",
- "native": "Texan",
- "feature": "Feature",
- "background": "Background",
- "scenario": "Scenario",
- "scenario_outline": "All y'all",
- "examples": "Examples",
- "given": "[*]|Given y'all",
- "when": "[*]|When y'all",
- "then": "[*]|Then y'all",
- "and": "[*]|And y'all",
- "but": "[*]|But y'all"
- },
- "eo": {
- "name": "Esperanto",
- "native": "Esperanto",
- "feature": "Trajto",
- "background": "Fono",
- "scenario": "Scenaro",
- "scenario_outline": "Konturo de la scenaro",
- "examples": "Ekzemploj",
- "given": "[*]|Donitaĵo",
- "when": "[*]|Se",
- "then": "[*]|Do",
- "and": "[*]|Kaj",
- "but": "[*]|Sed"
- },
- "es": {
- "name": "Spanish",
- "native": "español",
- "background": "Antecedentes",
- "feature": "Característica",
- "scenario": "Escenario",
- "scenario_outline": "Esquema del escenario",
- "examples": "Ejemplos",
- "given": "[*]|Dado|Dada|Dados|Dadas",
- "when": "[*]|Cuando",
- "then": "[*]|Entonces",
- "and": "[*]|Y",
- "but": "[*]|Pero"
- },
- "et": {
- "name": "Estonian",
- "native": "eesti keel",
- "feature": "Omadus",
- "background": "Taust",
- "scenario": "Stsenaarium",
- "scenario_outline": "Raamstsenaarium",
- "examples": "Juhtumid",
- "given": "[*]|Eeldades",
- "when": "[*]|Kui",
- "then": "[*]|Siis",
- "and": "[*]|Ja",
- "but": "[*]|Kuid"
- },
- "fa": {
- "name": "Persian",
- "native": "فارسی",
- "feature": "وِیژگی",
- "background": "زمینه",
- "scenario": "سناریو",
- "scenario_outline": "الگوی سناریو",
- "examples": "نمونه ها",
- "given": "[*]|با فرض",
- "when": "[*]|هنگامی",
- "then": "[*]|آنگاه",
- "and": "[*]|و",
- "but": "[*]|اما"
- },
- "fi": {
- "name": "Finnish",
- "native": "suomi",
- "feature": "Ominaisuus",
- "background": "Tausta",
- "scenario": "Tapaus",
- "scenario_outline": "Tapausaihio",
- "examples": "Tapaukset",
- "given": "[*]|Oletetaan",
- "when": "[*]|Kun",
- "then": "[*]|Niin",
- "and": "[*]|Ja",
- "but": "[*]|Mutta"
- },
- "fr": {
- "name": "French",
- "native": "français",
- "feature": "Fonctionnalité",
- "background": "Contexte",
- "scenario": "Scénario",
- "scenario_outline": "Plan du scénario|Plan du Scénario",
- "examples": "Exemples",
- "given": "[*]|Soit|Etant donné|Etant donnée|Etant donnés|Etant données|Étant donné|Étant donnée|Étant donnés|Étant données",
- "when": "[*]|Quand|Lorsque|Lorsqu'<",
- "then": "[*]|Alors",
- "and": "[*]|Et",
- "but": "[*]|Mais"
- },
- "he": {
- "name": "Hebrew",
- "native": "עברית",
- "feature": "תכונה",
- "background": "רקע",
- "scenario": "תרחיש",
- "scenario_outline": "תבנית תרחיש",
- "examples": "דוגמאות",
- "given": "[*]|בהינתן",
- "when": "[*]|כאשר",
- "then": "[*]|אז|אזי",
- "and": "[*]|וגם",
- "but": "[*]|אבל"
- },
- "hr": {
- "name": "Croatian",
- "native": "hrvatski",
- "feature": "Osobina|Mogućnost|Mogucnost",
- "background": "Pozadina",
- "scenario": "Scenarij",
- "scenario_outline": "Skica|Koncept",
- "examples": "Primjeri|Scenariji",
- "given": "[*]|Zadan|Zadani|Zadano",
- "when": "[*]|Kada|Kad",
- "then": "[*]|Onda",
- "and": "[*]|I",
- "but": "[*]|Ali"
- },
- "hu": {
- "name": "Hungarian",
- "native": "magyar",
- "feature": "Jellemző",
- "background": "Háttér",
- "scenario": "Forgatókönyv",
- "scenario_outline": "Forgatókönyv vázlat",
- "examples": "Példák",
- "given": "[*]|Amennyiben|Adott",
- "when": "[*]|Majd|Ha|Amikor",
- "then": "[*]|Akkor",
- "and": "[*]|És",
- "but": "[*]|De"
- },
- "id": {
- "name": "Indonesian",
- "native": "Bahasa Indonesia",
- "feature": "Fitur",
- "background": "Dasar",
- "scenario": "Skenario",
- "scenario_outline": "Skenario konsep",
- "examples": "Contoh",
- "given": "[*]|Dengan",
- "when": "[*]|Ketika",
- "then": "[*]|Maka",
- "and": "[*]|Dan",
- "but": "[*]|Tapi"
- },
- "is": {
- "name": "Icelandic",
- "native": "Íslenska",
- "feature": "Eiginleiki",
- "background": "Bakgrunnur",
- "scenario": "Atburðarás",
- "scenario_outline": "Lýsing Atburðarásar|Lýsing Dæma",
- "examples": "Dæmi|Atburðarásir",
- "given": "[*]|Ef",
- "when": "[*]|Þegar",
- "then": "[*]|Þá",
- "and": "[*]|Og",
- "but": "[*]|En"
- },
- "it": {
- "name": "Italian",
- "native": "italiano",
- "feature": "Funzionalità",
- "background": "Contesto",
- "scenario": "Scenario",
- "scenario_outline": "Schema dello scenario",
- "examples": "Esempi",
- "given": "[*]|Dato|Data|Dati|Date",
- "when": "[*]|Quando",
- "then": "[*]|Allora",
- "and": "[*]|E",
- "but": "[*]|Ma"
- },
- "ja": {
- "name": "Japanese",
- "native": "日本語",
- "feature": "フィーチャ|機能",
- "background": "背景",
- "scenario": "シナリオ",
- "scenario_outline": "シナリオアウトライン|シナリオテンプレート|テンプレ|シナリオテンプレ",
- "examples": "例|サンプル",
- "given": "[*]|前提<",
- "when": "[*]|もし<",
- "then": "[*]|ならば<",
- "and": "[*]|かつ<",
- "but": "[*]|しかし<|但し<|ただし<"
- },
- "ko": {
- "name": "Korean",
- "native": "한국어",
- "background": "배경",
- "feature": "기능",
- "scenario": "시나리오",
- "scenario_outline": "시나리오 개요",
- "examples": "예",
- "given": "[*]|조건<|먼저<",
- "when": "[*]|만일<|만약<",
- "then": "[*]|그러면<",
- "and": "[*]|그리고<",
- "but": "[*]|하지만<|단<"
- },
- "lt": {
- "name": "Lithuanian",
- "native": "lietuvių kalba",
- "feature": "Savybė",
- "background": "Kontekstas",
- "scenario": "Scenarijus",
- "scenario_outline": "Scenarijaus šablonas",
- "examples": "Pavyzdžiai|Scenarijai|Variantai",
- "given": "[*]|Duota",
- "when": "[*]|Kai",
- "then": "[*]|Tada",
- "and": "[*]|Ir",
- "but": "[*]|Bet"
- },
- "lu": {
- "name": "Luxemburgish",
- "native": "Lëtzebuergesch",
- "feature": "Funktionalitéit",
- "background": "Hannergrond",
- "scenario": "Szenario",
- "scenario_outline": "Plang vum Szenario",
- "examples": "Beispiller",
- "given": "[*]|ugeholl",
- "when": "[*]|wann",
- "then": "[*]|dann",
- "and": "[*]|an|a",
- "but": "[*]|awer|mä"
- },
- "lv": {
- "name": "Latvian",
- "native": "latviešu",
- "feature": "Funkcionalitāte|Fīča",
- "background": "Konteksts|Situācija",
- "scenario": "Scenārijs",
- "scenario_outline": "Scenārijs pēc parauga",
- "examples": "Piemēri|Paraugs",
- "given": "[*]|Kad",
- "when": "[*]|Ja",
- "then": "[*]|Tad",
- "and": "[*]|Un",
- "but": "[*]|Bet"
- },
- "nl": {
- "name": "Dutch",
- "native": "Nederlands",
- "feature": "Functionaliteit",
- "background": "Achtergrond",
- "scenario": "Scenario",
- "scenario_outline": "Abstract Scenario",
- "examples": "Voorbeelden",
- "given": "[*]|Gegeven|Stel",
- "when": "[*]|Als",
- "then": "[*]|Dan",
- "and": "[*]|En",
- "but": "[*]|Maar"
- },
- "no": {
- "name": "Norwegian",
- "native": "norsk",
- "feature": "Egenskap",
- "background": "Bakgrunn",
- "scenario": "Scenario",
- "scenario_outline": "Scenariomal|Abstrakt Scenario",
- "examples": "Eksempler",
- "given": "[*]|Gitt",
- "when": "[*]|Når",
- "then": "[*]|Så",
- "and": "[*]|Og",
- "but": "[*]|Men"
- },
- "pl": {
- "name": "Polish",
- "native": "polski",
- "feature": "Właściwość|Funkcja|Aspekt|Potrzeba biznesowa",
- "background": "Założenia",
- "scenario": "Scenariusz",
- "scenario_outline": "Szablon scenariusza",
- "examples": "Przykłady",
- "given": "[*]|Zakładając|Mając",
- "when": "[*]|Jeżeli|Jeśli|Gdy|Kiedy",
- "then": "[*]|Wtedy",
- "and": "[*]|Oraz|I",
- "but": "[*]|Ale"
- },
- "pt": {
- "name": "Portuguese",
- "native": "português",
- "background": "Contexto|Cenário de Fundo|Cenario de Fundo|Fundo",
- "feature": "Funcionalidade|Característica|Caracteristica",
- "scenario": "Cenário|Cenario",
- "scenario_outline": "Esquema do Cenário|Esquema do Cenario|Delineação do Cenário|Delineacao do Cenario",
- "examples": "Exemplos|Cenários|Cenarios",
- "given": "[*]|Dado|Dada|Dados|Dadas",
- "when": "[*]|Quando",
- "then": "[*]|Então|Entao",
- "and": "[*]|E",
- "but": "[*]|Mas"
- },
- "ro": {
- "name": "Romanian",
- "native": "română",
- "background": "Context",
- "feature": "Functionalitate|Funcționalitate|Funcţionalitate",
- "scenario": "Scenariu",
- "scenario_outline": "Structura scenariu|Structură scenariu",
- "examples": "Exemple",
- "given": "[*]|Date fiind|Dat fiind|Dati fiind|Dați fiind|Daţi fiind",
- "when": "[*]|Cand|Când",
- "then": "[*]|Atunci",
- "and": "[*]|Si|Și|Şi",
- "but": "[*]|Dar"
- },
- "ru": {
- "name": "Russian",
- "native": "русский",
- "feature": "Функция|Функционал|Свойство",
- "background": "Предыстория|Контекст",
- "scenario": "Сценарий",
- "scenario_outline": "Структура сценария",
- "examples": "Примеры",
- "given": "[*]|Допустим|Дано|Пусть",
- "when": "[*]|Если|Когда",
- "then": "[*]|То|Тогда",
- "and": "[*]|И|К тому же|Также",
- "but": "[*]|Но|А"
- },
- "sv": {
- "name": "Swedish",
- "native": "Svenska",
- "feature": "Egenskap",
- "background": "Bakgrund",
- "scenario": "Scenario",
- "scenario_outline": "Abstrakt Scenario|Scenariomall",
- "examples": "Exempel",
- "given": "[*]|Givet",
- "when": "[*]|När",
- "then": "[*]|Så",
- "and": "[*]|Och",
- "but": "[*]|Men"
- },
- "sk": {
- "name": "Slovak",
- "native": "Slovensky",
- "feature": "Požiadavka",
- "background": "Pozadie",
- "scenario": "Scenár",
- "scenario_outline": "Náčrt Scenáru",
- "examples": "Príklady",
- "given": "[*]|Pokiaľ",
- "when": "[*]|Keď",
- "then": "[*]|Tak",
- "and": "[*]|A",
- "but": "[*]|Ale"
- },
- "sr-Latn": {
- "name": "Serbian (Latin)",
- "native": "Srpski (Latinica)",
- "feature": "Funkcionalnost|Mogućnost|Mogucnost|Osobina",
- "background": "Kontekst|Osnova|Pozadina",
- "scenario": "Scenario|Primer",
- "scenario_outline": "Struktura scenarija|Skica|Koncept",
- "examples": "Primeri|Scenariji",
- "given": "[*]|Zadato|Zadate|Zatati",
- "when": "[*]|Kada|Kad",
- "then": "[*]|Onda",
- "and": "[*]|I",
- "but": "[*]|Ali"
- },
- "sr-Cyrl": {
- "name": "Serbian",
- "native": "Српски",
- "feature": "Функционалност|Могућност|Особина",
- "background": "Контекст|Основа|Позадина",
- "scenario": "Сценарио|Пример",
- "scenario_outline": "Структура сценарија|Скица|Концепт",
- "examples": "Примери|Сценарији",
- "given": "[*]|Задато|Задате|Задати",
- "when": "[*]|Када|Кад",
- "then": "[*]|Онда",
- "and": "[*]|И",
- "but": "[*]|Али"
- },
- "tr": {
- "name": "Turkish",
- "native": "Türkçe",
- "feature": "Özellik",
- "background": "Geçmiş",
- "scenario": "Senaryo",
- "scenario_outline": "Senaryo taslağı",
- "examples": "Örnekler",
- "given": "[*]|Diyelim ki",
- "when": "[*]|Eğer ki",
- "then": "[*]|O zaman",
- "and": "[*]|Ve",
- "but": "[*]|Fakat|Ama"
- },
- "uk": {
- "name": "Ukrainian",
- "native": "Українська",
- "feature": "Функціонал",
- "background": "Передумова",
- "scenario": "Сценарій",
- "scenario_outline": "Структура сценарію",
- "examples": "Приклади",
- "given": "[*]|Припустимо|Припустимо, що|Нехай|Дано",
- "when": "[*]|Якщо|Коли",
- "then": "[*]|То|Тоді",
- "and": "[*]|І|А також|Та",
- "but": "[*]|Але"
- },
- "uz": {
- "name": "Uzbek",
- "native": "Узбекча",
- "feature": "Функционал",
- "background": "Тарих",
- "scenario": "Сценарий",
- "scenario_outline": "Сценарий структураси",
- "examples": "Мисоллар",
- "given": "[*]|Агар",
- "when": "[*]|Агар",
- "then": "[*]|Унда",
- "and": "[*]|Ва",
- "but": "[*]|Лекин|Бирок|Аммо"
- },
- "vi": {
- "name": "Vietnamese",
- "native": "Tiếng Việt",
- "feature": "Tính năng",
- "background": "Bối cảnh",
- "scenario": "Tình huống|Kịch bản",
- "scenario_outline": "Khung tình huống|Khung kịch bản",
- "examples": "Dữ liệu",
- "given": "[*]|Biết|Cho",
- "when": "[*]|Khi",
- "then": "[*]|Thì",
- "and": "[*]|Và",
- "but": "[*]|Nhưng"
- },
- "zh-CN": {
- "name": "Chinese simplified",
- "native": "简体中文",
- "feature": "功能",
- "background": "背景",
- "scenario": "场景|剧本",
- "scenario_outline": "场景大纲|剧本大纲",
- "examples": "例子",
- "given": "[*]|假如<|假设<|假定<",
- "when": "[*]|当<",
- "then": "[*]|那么<",
- "and": "[*]|而且<|并且<|同时<",
- "but": "[*]|但是<"
- },
- "zh-TW": {
- "name": "Chinese traditional",
- "native": "繁體中文",
- "feature": "功能",
- "background": "背景",
- "scenario": "場景|劇本",
- "scenario_outline": "場景大綱|劇本大綱",
- "examples": "例子",
- "given": "[*]|假如<|假設<|假定<",
- "when": "[*]|當<",
- "then": "[*]|那麼<",
- "and": "[*]|而且<|並且<|同時<",
- "but": "[*]|但是<"
- }
-}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libtest-bdd-cucumber-perl.git
More information about the Pkg-perl-cvs-commits
mailing list