Non-English Stories

Feb 19, 2010 at 10:43 AM


In some contexts, we use our mother tongue instead of English for our stories in order to gain easier communication with the users.

Are you considering support for that scenario?

It could be as simple as open up StoryQ to an alias dictionary like so: { { "In order to", "For at" }, { "I want", "Jeg vil"} } (just a simple pseudo-code example).

One could then share alias dictionaries here. I'd be happy to provide alias dictionaries for Danish and Swedish for example.

Maybe I could find the time in the future and add such a feature to StoryQ if there's interest from others and a likelihood that it'll be included in the main branch so that I don't have to support a branch of my own of StoryQ at work.


Feb 19, 2010 at 11:12 AM
Edited Feb 19, 2010 at 12:11 PM


I am glad you asked! The answer is YES. Support for non-english lanuages (and even other english BDD "dialects") was explicitly baked into the architecture of V2. I haven't documented how you'd go about doing this yourself yet, because I haven't tried it. I need someone to translate for me :).

If you are willing to translate for me, there is a single source file that i need you to create a localised version of. It's under src/StoryQ/FluentInterface/StoryQ.txt

There's a tiny bit of explanation at

Just post the translated versions on here for me, and i'll work on the best way to compile & distribute this. I'd appreciate your work very much...

Cheers - Rob


Feb 21, 2010 at 2:49 PM

Hi robfe,

That's fantastic news!

I'll look into it.


Apr 21, 2010 at 8:02 AM

Hi Martin

Have you had a chance to look at this?

I'm very keen to have multiple languages in StoryQ, so if there's anything I can do to help just let me know


Regards - Rob

May 12, 2010 at 8:59 AM

Hi Rob,

I'm so sorry! I've had my hands full with another project since last time I wrote in this thread.

As soon as we pick up the other project (which is supposed to happen pretty soon), I'll supply Danish and Swedish translations.



May 12, 2010 at 9:50 AM

Please don't apologise! It's good to see you back :)

May 16, 2010 at 8:28 AM

Hi Rob.

I´m from Argentina and here we spoke in spanish ("Hola").

I´d like to colaborate with you in the translation.

I downloaded the source code, and change in \storyq_e2167813c260\src\StoryQ\FluentInterface\StoryQ.txt the labels.

Later, rebuild the solution, replace the original with the new storyq.dll. But nothings change.

I observate that StoryQ.txt it´s not embedded resource.

Thank´s for this excelent tool.

May 16, 2010 at 9:00 AM



All you need to do now is re-run the t4 template. In your solution explorer there should be a button named something like "rerun all templates".


Can you please post your new storyq.txt file so I can include it in the source?

Regards - Rob

May 18, 2010 at 4:46 PM

 Hi Rob

I paste de StoryQ.txt

I would to translate de states and transitions?

Another question: In the next release, you will update storyQ with this enhancement posted here:


digraph StoryQ{

    Story				[shape=doublecircle,		tooltip="Este es el ítem raíz para cualquier historia"]
    Benefit			[				tooltip="El objetivo en el mundo real (valor de negocio) de la historia"]
    Role				[				tooltip="El rol (una categoría de actores/usuarios) o roles que reciben este beneficio"]
    Feature			[				tooltip="El proceso de software que implementará el beneficio especifico"]
    Scenario			[				tooltip="El nombre de cada escenario dentro de una historia. Puede pensar cada escenario como el capítulo de un libro"]
    Condition			[fillcolor=skyblue, style=filled,	tooltip="Las precondiciones estarán presentes en el inicio del escenario"]
    Operation			[fillcolor=skyblue, style=filled,	tooltip="La acción(es) que son realizadas en el sistema bajo testeo"]
    Outcome			[fillcolor=skyblue, style=filled,	tooltip="El resultado esperado de la ejecución de las acciones especificadas con un estado inicial específico"]

    Story->Benefit			[label="Para",			tooltip="Describe el valor en el mundo real para esta la historia. ¿Cuál es el proceso de negocio que el usuario requiere soporte de software?",indentlevel="1"]
    Benefit->Benefit		[label="Y",			tooltip="Describe cualquier función de negocio secundaria que respaldará esta historia",indentlevel="2"]
    Benefit->Role			[label="Como",			tooltip="El rol de la persona que es el usuario previsto para esta característica",indentlevel="1"]
    Role->Role			[label="OComo",			tooltip="Otros roles que puedan usar esta historia",indentlevel="2"]
    Role->Feature			[label="Quiero",			tooltip="Describe el proceso de software (características) que soportará los requerimientos de negocios",indentlevel="1"]
    Feature->Feature		[label="Y",			tooltip="Otras características que implementarán el beneficio deseado",indentlevel="2"]
    Feature -> Scenario		[label="ConEscenario",		tooltip="Adicionar un escenario ('dado'/'cuando'/'entonces') para esta historia. Los escenarios se pueden adicionar (y deberán ejecutarse) en secuencia. Cada escenario debe tener un breve nombre descriptivo",indentlevel="3"]

    Scenario -> Condition		[label="Dado",			tooltip="Provee el contexto inicial para el escenario. Intente no describir comportamientos o acciones, este paso describe e inicializa estados",indentlevel="4"]
    Condition -> Condition		[label="Y",			tooltip="Provee otra precondición para describir las inicializaciones de nuestros escenarios",indentlevel="5"]
    Condition -> Operation		[label="Cuando",			tooltip="Describe las acciones que son realizadas en el sistema bajo testeo",indentlevel="4"]
    Operation -> Operation		[label="Y",			tooltip="Provee otra acción que será realizada en el sistema, antes de nuestro chequeo de comportamiento ('entonces')",indentlevel="5"]
    Operation -> Outcome		[label="Entonces",			tooltip="Describe los comportamientos del sistema que se deben obtener del estado previo y las acciones",indentlevel="4"]
    Outcome -> Outcome		[label="Y",			tooltip="Provee otro resultado de comportamiento para ser chequeado",indentlevel="5"]
    Outcome -> Scenario		[label="ConEscenario",		tooltip="Adiciona otro escenario a esta historia. StoryQ ejecuta estos escenarios uno seguido de otro, por lo tanto un estado puede ser compartido entre escenarios en una única historia de usuario",indentlevel="3"]


May 18, 2010 at 10:22 PM

Hi Vikingo

Which of those features are you interested in? Not all of them will make it into the official trunk.

With respect to your StoryQ.txt, that's great, but if you can change the state names too then people will understand better. I guess I can just use google translate :)

Can i please get your input on whether these are the correct translations? I am guess that from a programming/BDD point of view they might be completely off :)



















May 19, 2010 at 1:55 AM

Rob, the translation it's ok, except for Role -> Rol

With respect to the features, are descript below :


  • scenario description should be created based on the method name
  • story name could be created based on the whole class name

#2 calling the method  .ExecuteWithSimpleReport(MethodBase.GetCurrentMethod()); we changed to .Run(); using the following extentions method

#3 Empty String-typed arguments are displayed as ” – nothing – so I created EmptyStringParameterFormatAttribute

The product owner write the stories in spanish. A rely nice feature would be paste the story in spanish in the converterWPF and generate de code c#. Is this posible?

Thank you!!!!

May 19, 2010 at 2:02 AM

The method in C# code that converterWPF generate it's ok. The rest of developers understand "a little" of english :-).

But the documents of product owner is in spanish.

Sorry, another question.

When you estimate that the new version will release?

May 19, 2010 at 6:14 AM
Edited May 19, 2010 at 10:37 AM

Regarding the multilingual WPF converter, I am expecting to have to use MEF, which is part of .NET 4. Are you on .NET 4 yet or still with 3.5?

1, 2 & 3 are all things that you can work around with a tiny bit of your own code. It may be some time before we settle on exactly how to implement them ourselves - we'd like to see some other ideas before we lock everryone down to one implementation

May 20, 2010 at 12:48 AM

hi Rob,

Actually I´m working with .NET 3.5

I don´t understand the relationship between MEF (IoC) and WPFconverter multilingual.

Futhermore, I recommend you to use Structuremap for IoC. It´s rocks.

With respect to change the source code, I don´t know where to make the changes to update with the features #1, #2 and #3.

Thanks Rob. You have a lot of patience for respond my questions.

May 20, 2010 at 1:22 PM

MEF isn't (just?) an IOC system, it's a plugin system. I was planning to put language packs into their own DLL, and have the WPF gui automatically pick up said DLLs from a directory, using DirectoryCatalog...

Just put those classes into your own test project - they don't have to be part of StoryQ to work, they can work with our extensibility points. let me know exactly what you're trying to acheive and what you've done so far...

No worries! Keep em coming...