There are two different "times" in C# computing: Compile time, and run time.
Compile time happens once for each version of you application: the system processes your source code and produces an executable file.
This does not produce any results that a user can see, and the logic of your application isn't involved, just the syntax of the actual code.
If you think about cars instead, compile time is when the manufacturer builds your specific car - until this has happened you can;t drive it!
Run time happens each time you try to execute your program to make it do what the user wants.
This is when all interaction with the user happens, and the logic of your app comes into play.
For cars, run time begins each time you you sit in the driver's seat and start the engine, and ends when the engine stops running.
At compile time, the system uses your variable names.
At run time, your variables names are irrelevant and even forgotten because your user can never see them!
So if you try to build a variable name as a string and use it at run time to access a variable, that won't work.
Instead, use a 2D array, and access the languages from that:
string[,] languages = {{ "Exercise 1", "Next", "Previous" },
{ "Övning 1", "Nästa", "Förgående" },
{ "blabla 1", "bla", "bla" } };
const int English = 0;
const int Swedish = 1;
const int Blah = 2;
Then you can assess the strings like this:
Console.WriteLine(languages[English, 0]);
Console.WriteLine(languages[Swedish, 0]);
Console.WriteLine(languages[Blah, 0]);
Or even like this:
for (int lang = 0; lang < languages.GetLength(0); lang++)
{
for (int str = 0; str < languages.GetLength(1); str++)
{
Console.WriteLine(languages[lang, str]);
}
}