AstraLingua 4.0.0
See the version list below for details.
dotnet add package AstraLingua --version 4.0.0
NuGet\Install-Package AstraLingua -Version 4.0.0
<PackageReference Include="AstraLingua" Version="4.0.0" />
<PackageVersion Include="AstraLingua" Version="4.0.0" />
<PackageReference Include="AstraLingua" />
paket add AstraLingua --version 4.0.0
#r "nuget: AstraLingua, 4.0.0"
#:package AstraLingua@4.0.0
#addin nuget:?package=AstraLingua&version=4.0.0
#tool nuget:?package=AstraLingua&version=4.0.0
<img src="https://github.com/WaitingForNeko/AstraLingua/blob/main/Assets/Icon10X.png?raw=true" width=180>
Astra Lingua
Astra Lingua is a universal alien language invented for Konekomi Castle, a game by studio Waiting For Neko.
Repository Contents
AstraLingua- A C# library for converting to/from Astra Lingua.AstraLinguaCheatSheet- A PDF explaining how Astra Lingua works.AstraLinguaDictionary- A JSONH file containing the standard words used in Astra Lingua.
Try Online
Try Astra Lingua online at .NET Lab!
<details> <summary>Expand source code</summary>
#:package AstraLingua@*
using System;
using System.Linq;
using System.Numerics;
using AstraLingua;
using ExtendedNumerics;
// Number Codes -> Astra Lingua
#if true
{
// Input
BigInteger[] NumberCodes = [
8, 687
];
// Code
string LiteralString = string.Join(" ", NumberCodes.Select(NumberCode => AstraLinguaDictionary.GetWordName((int)NumberCode)));
string DescriptionString = string.Join(" ", NumberCodes.Select(NumberCode => AstraLinguaDictionary.GetWord((int)NumberCode)));
string NumberCodesString = string.Join(", ", NumberCodes);
string AstraLinguaString = AstraLinguaConverter.NumberCodesToAstraLingua(NumberCodes);
Console.WriteLine();
Console.WriteLine("// Number Codes -> Astra Lingua");
Console.WriteLine("Literal:\t\t\t" + LiteralString);
Console.WriteLine("Description:\t\t" + DescriptionString);
Console.WriteLine("Number Codes:\t\t" + NumberCodesString);
Console.WriteLine("Astra Lingua:\t\t" + AstraLinguaString);
}
#endif
// Astra Lingua -> Number Codes
#if true
{
// Input
string AstraLingua = """
⊢⊢⊩⊩⊪⊪⊢⊢⊩⊢⊪⊢⊢⊢⊢⊩⊪⊩
""";
// Code
string AstraLinguaString = string.Concat(AstraLingua.Where(Ch => !char.IsWhiteSpace(Ch)));
BigInteger[] NumberCodes = AstraLinguaConverter.AstraLinguaToNumberCodes(AstraLingua);
string NumberCodesString = string.Join(", ", NumberCodes);
string DescriptionString = string.Join(" ", NumberCodes.Select(NumberCode => AstraLinguaDictionary.GetWord((int)NumberCode)));
string LiteralString = string.Join(" ", NumberCodes.Select(NumberCode => AstraLinguaDictionary.GetWordName((int)NumberCode)));
Console.WriteLine();
Console.WriteLine("// Astra Lingua -> Number Codes");
Console.WriteLine("Astra Lingua:\t\t" + AstraLinguaString);
Console.WriteLine("Number Codes:\t\t" + NumberCodesString);
Console.WriteLine("Description:\t\t" + DescriptionString);
Console.WriteLine("Literal:\t\t\t" + LiteralString);
}
#endif
// Integer -> Astra Lingua Integer
#if true
{
// Input
BigInteger Integer = BigInteger.Parse(
"67"
);
// Code
string IntegerString = Integer.ToString();
string AstraLinguaIntegerString = AstraLinguaConverter.IntegerToAstraLinguaInteger(Integer);
Console.WriteLine();
Console.WriteLine("// Integer -> Astra Lingua Integer");
Console.WriteLine("Integer:\t\t\t" + IntegerString);
Console.WriteLine("Astra Lingua:\t\t" + AstraLinguaIntegerString);
}
#endif
// Astra Lingua Integer -> Integer
#if true
{
// Input
string AstraLinguaRational = """
[⊢⊪⊢⊢⊢[
""";
// Code
string AstraLinguaIntegerString = string.Concat(AstraLinguaRational.Where(Ch => !char.IsWhiteSpace(Ch)));
BigReal Rational = AstraLinguaConverter.AstraLinguaIntegerToInteger(AstraLinguaRational);
string IntegerString = Rational.ToString();
Console.WriteLine();
Console.WriteLine("// Astra Lingua Integer -> Integer");
Console.WriteLine("Astra Lingua:\t\t" + AstraLinguaIntegerString);
Console.WriteLine("Integer:\t\t\t" + IntegerString);
}
#endif
// Rational -> Astra Lingua Rational
#if true
{
// Input
BigReal Rational = BigReal.Simplify(BigReal.Parse(
"2.5"
));
// Code
string RationalString = Rational.ToString();
string FractionString = Rational.ToRationalString();
string AstraLinguaRationalString = AstraLinguaConverter.RationalToAstraLinguaRational(Rational);
Console.WriteLine();
Console.WriteLine("// Rational -> Astra Lingua Rational");
Console.WriteLine("Rational:\t\t\t" + RationalString);
Console.WriteLine("Fraction:\t\t\t" + FractionString);
Console.WriteLine("Astra Lingua:\t\t" + AstraLinguaRationalString);
}
#endif
// Astra Lingua Rational -> Rational
#if true
{
// Input
string AstraLinguaRational = """
[⊢⊪⊪>⊢⊪[
""";
// Code
string AstraLinguaRationalString = string.Concat(AstraLinguaRational.Where(Ch => !char.IsWhiteSpace(Ch)));
BigReal Rational = AstraLinguaConverter.AstraLinguaRationalToRational(AstraLinguaRational);
string FractionString = Rational.ToRationalString();
string RationalString = Rational.ToString();
Console.WriteLine();
Console.WriteLine("// Astra Lingua Rational -> Rational");
Console.WriteLine("Astra Lingua:\t\t" + AstraLinguaRationalString);
Console.WriteLine("Fraction:\t\t\t" + FractionString);
Console.WriteLine("Rational:\t\t\t" + RationalString);
}
#endif
// Astra Lingua -> Transliterated Astra Lingua
#if true
{
// Input
string AstraLingua = """
⊢⊢⊩⊩⊪⊪⊢⊢⊩⊢⊪⊢⊢⊢⊢⊩⊪⊩≡≡
""";
// Code
string TransliteratedAstraLinguaString = AstraLinguaConverter.TonedAstraLinguaToTransliteratedTonedAstraLingua(AstraLingua);
Console.WriteLine();
Console.WriteLine("// Astra Lingua -> Transliterated Astra Lingua");
Console.WriteLine("Astra Lingua:\t\t" + AstraLingua);
Console.WriteLine("Transliterated:\t\t" + TransliteratedAstraLinguaString);
}
#endif
// Transliterated Astra Lingua -> Astra Lingua
#if true
{
// Input
string TransliteratedAstraLingua = """
aaoouu aaoauaaaaouo!!
""";
// Code
string AstraLinguaString = AstraLinguaConverter.TransliteratedTonedAstraLinguaToTonedAstraLingua(TransliteratedAstraLingua);
Console.WriteLine();
Console.WriteLine("// Transliterated Astra Lingua -> Astra Lingua");
Console.WriteLine("Transliterated:\t\t" + TransliteratedAstraLingua);
Console.WriteLine("Astra Lingua:\t\t" + AstraLinguaString);
}
#endif
</details>
Overview
Astra Lingua is designed as a lingua franca for different alien species to communicate with each other. As such, there are only three sounds.
Since the word for hello (⊢⊢⊩⊩⊪⊪) contains the three sounds in order, it can be used
to calibrate between species.
Astra Lingua is based around balanced ternary. There are three digits:
⊢(1)⊩(0)⊪(-1 / T)
Each word is encoded as an integer in balanced ternary. For example:
- English:
Hello - Conversion:
Hello→8→10T→110 0TT→⊢⊢⊩⊩⊪⊪ - Astra Lingua:
⊢⊢⊩⊩⊪⊪
There are two additional symbols for embedding literal numbers:
[(used for writing literal numbers, e.g.[⊢⊩⊪[is 8)>(used for writing literal fractions, e.g.[⊢⊩⊪>⊢⊢[is 8/4 or 2)
The Konekomi, an alien species in the world of Konekomi Castle who helped to create Astra Lingua, have a dialect that includes feeler vibrations to indicate tone:
–(? / uncertain / question)=(. / neutral / expressionless)≡(! / urgent / emphasis)
The number codes in Astra Lingua can technically be interpreted with any meaning, but standard meanings can be found in the Astra Lingua Dictionary. For example:
2- life (moving object)18- me (speaker / self)149- storm (atmospheric disturbance / hazard)
To learn more about Astra Lingua, you can read the cheat sheet or watch the video.
Transliteration
Astra Lingua can be transliterated to English characters using the following symbols:
a(⊢)o(⊩)u(⊪)[…]([…[)/(>)?(–).(=)!(≡)
For example, ⊢⊢⊩⊩⊪⊪ (hello) can be transliterated as aaoouu.
Standard Units
Astra Lingua uses standard units based on Sirius A, the brightest star in the night sky, 8.6 light years away from Earth:
- Siri (the diameter of Sirius A) =
2_380_000km - Lumi (the time for light to travel the diameter of Sirius A) =
7.94seconds - Kora (the mass of Sirius A) =
4.102E30kg - Sola (the surface temperature of Sirius A offset from absolute zero) =
9_940°K
<img src="https://github.com/WaitingForNeko/AstraLingua/blob/main/Assets/SiriusAAndBHubblePhoto.jpg?raw=true" width=184.5>
A photo of Sirius A and B by NASA using the Hubble Space Telescope.
For example:
10kilometers is approximately0.0000042Siri10years is approximately40_000_000Lumi10kilograms is approximately0.0000000000000000000000000000024378Kora10degrees Celsius is approximately0.0284859Sola
Examples
Some examples attempting to translate English to Astra Lingua:
"Welcome"
- Number Codes:
8 (hello) - Astra Lingua:
⊢⊢⊩⊩⊪⊪ - Transliterated:
aaoouu
"Astra Lingua"
- Number Codes:
713 (Astra Lingua) - Astra Lingua:
⊢⊢⊩⊢⊩⊪⊢⊢⊢⊩⊪⊪ - Transliterated:
aaoaouaaaouu
"Who are you?" (Konekomi Dialect)
- Number Codes:
19 (you) 1 (something) 22 (question) ? (uncertain) ? (uncertain) - Astra Lingua:
⊢⊢⊪⊪⊩⊢⊩⊪⊢⊢⊢⊪⊪⊢⊢–– - Transliterated:
aauuoa oua aauuaa??
"Why is the sky blue?"
- Number Codes:
17 (confuse) 627 (daylight) 508 (blue) 22 (question) - Astra Lingua:
⊢⊢⊪⊪⊩⊪⊢⊢⊩⊢⊪⊪⊢⊢⊪⊩⊪⊩⊢⊢⊪⊢⊩⊢⊢⊪⊢⊩⊪⊢⊢⊢⊪⊪⊢⊢ - Transliterated:
aauuou aaoauuaauouo aauaoaauaoua aauuaa
"3.5"
- Fraction:
7 / 2 - Balanced Ternary Fraction:
1T1 / 1T - Astra Lingua:
[⊢⊪⊢>⊢⊪[ - Transliterated:
[aua/au]
"Three Point Five"
- Number Codes:
26 (one) 28 (minus-one) 26 (one) 13 (division) 26 (one) 28 (minus-one) - Astra Lingua:
⊢⊢⊩⊪⊩⊪⊢⊢⊩⊪⊩⊢⊢⊢⊩⊪⊩⊪⊢⊢⊢⊩⊪⊢⊢⊢⊩⊪⊩⊪⊢⊢⊩⊪⊩⊢ - Transliterated:
aaouou aaouoa aaouou aaaoua aaouou aaouoa
License
This repository is licensed to you under the MIT license. You can use it freely, but must give attribution.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- BigReal (>= 6.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated | |
|---|---|---|---|
| 4.6.0 | 114 | 5/28/2026 | |
| 4.5.0 | 104 | 5/28/2026 | |
| 4.4.0 | 98 | 5/27/2026 | |
| 4.3.0 | 102 | 5/27/2026 | |
| 4.2.0 | 102 | 5/26/2026 | |
| 4.1.0 | 114 | 5/26/2026 | |
| 4.0.0 | 135 | 5/25/2026 | |
| 3.1.0 | 110 | 5/24/2026 | |
| 3.0.0 | 115 | 5/24/2026 | |
| 2.4.0 | 114 | 5/23/2026 | |
| 2.3.0 | 123 | 5/21/2026 | |
| 2.2.0 | 122 | 5/21/2026 | |
| 2.1.0 | 122 | 5/21/2026 | |
| 2.0.0 | 121 | 5/21/2026 | |
| 1.5.0 | 140 | 4/29/2026 | |
| 1.4.0 | 137 | 4/29/2026 | |
| 1.3.0 | 188 | 4/3/2026 | |
| 1.2.0 | 142 | 3/25/2026 | |
| 1.1.0 | 130 | 3/22/2026 | |
| 1.0.0 | 124 | 3/21/2026 |