From e57c8e30138a78e4f74f1e53a8647d85ae1770ab Mon Sep 17 00:00:00 2001 From: jvyden Date: Sun, 14 Aug 2022 17:48:12 -0400 Subject: [PATCH] Add simple doc for translations --- .../.idea/indexLayout.xml | 5 +- .../Images/Localization-manager-created.png | Bin 0 -> 2949 bytes .../Images/Localization-manager-example.png | Bin 0 -> 47522 bytes .../Images/Localization-manager-new.png | Bin 0 -> 20785 bytes Documentation/Localization.md | 120 ++++++++++++++++++ 5 files changed, 124 insertions(+), 1 deletion(-) create mode 100644 Documentation/Images/Localization-manager-created.png create mode 100644 Documentation/Images/Localization-manager-example.png create mode 100644 Documentation/Images/Localization-manager-new.png create mode 100644 Documentation/Localization.md diff --git a/.idea/.idea.ProjectLighthouse/.idea/indexLayout.xml b/.idea/.idea.ProjectLighthouse/.idea/indexLayout.xml index 40fc41c7..e6a3f53a 100644 --- a/.idea/.idea.ProjectLighthouse/.idea/indexLayout.xml +++ b/.idea/.idea.ProjectLighthouse/.idea/indexLayout.xml @@ -1,7 +1,9 @@ - + + Documentation + .config/dotnet-tools.json .github @@ -9,6 +11,7 @@ .idea CONTRIBUTING.md DatabaseMigrations + Documentation LICENSE ProjectLighthouse.Localization ProjectLighthouse.sln.DotSettings diff --git a/Documentation/Images/Localization-manager-created.png b/Documentation/Images/Localization-manager-created.png new file mode 100644 index 0000000000000000000000000000000000000000..26f746b492122550e87a8446a7b2b10eca105992 GIT binary patch literal 2949 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 literal 0 HcmV?d00001 diff --git a/Documentation/Images/Localization-manager-new.png b/Documentation/Images/Localization-manager-new.png new file mode 100644 index 0000000000000000000000000000000000000000..decf27dad1d56dfb500f31827eb7d1bddf58930a GIT binary patch literal 20785 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 literal 0 HcmV?d00001 diff --git a/Documentation/Localization.md b/Documentation/Localization.md new file mode 100644 index 00000000..1a5c1911 --- /dev/null +++ b/Documentation/Localization.md @@ -0,0 +1,120 @@ +# Localization + +Translations in Lighthouse are done with [Crowdin](https://crowdin.com/project/project-lighthouse). + +For development, it is not important to worry about Crowdin; once your translations are merged into `main`, +the appropriate translation changes will be uploaded to Crowdin for community members to translate. + +## Creating translations + +### `Strings.cs` files + +Start by heading to `ProjectLighthouse.Localization` and open the `StringLists` directory. +You can either create a new file with the format `Strings.cs` or pick one that exists. + +A `TranslationArea` is an enum that can be found at the root of the Localization project. +It's purpose serves to split up unrelated translations and provide organization. + +Let's take a look at a simple `Strings.cs` file. + +```csharp +public static class AreaStrings +{ + public static readonly TranslatableString Translation = create("key"); + public static readonly TranslatableString OtherTranslation = create("other_translation"); + + private static TranslatableString create(string key) => new(TranslationAreas.Area, key); +} +``` + +As you can see, it's not complicated to figure out at all, but I should go over it anyway. + +At the top, we have two `public static readonly TranslatableString`s. These are what we will use to actually translate. + +The names can be anything you want, but you must create them through the `create(key)` function. +The key is the name of the key in the `.resx` file, which we will go over in the next section. + +At the bottom you'll notice a helper function. +This is to reduce duplicate code, make the class prettier, and most importantly save a bit of time when creating new +translations. +It creates a new `TranslatableString` with a `TranslationArea` set to `Area` with our key. + +### `.resx` files + +`.resx` files are called XML resource files. In Lighthouse, we use them to store translations. + +They can be interacted with programatically fairly easily, and are compiled down to a different format to save space in the final build. + +The best part is Crowdin can recognize and parse these files, and create its own `.resx` files. + +This is the basis of how translations are done. +Lighthouse will look up translations in these files using the key and `TranslationArea` given in a `TranslatableString`. + +To add a translation here, lets move to the root of the `Localization` project. + +You've probably already noticed the absurd amount of `.resx` files for each area and then each supported language. +This is normal; and there's not much we can do about it, unfortunately. + +For development, you do not need to worry about the .resx files for each language; just the ones with no language specified. +These files are the 'source' for translations. + +For this doc, I'm going to use JetBrains Rider's Localization Manager as a reference. +I imagine Visual Studio has something similar, but worst case scenario you can edit the `.resx` files manually. + +This is the `BaseLayout.resx` file shown in this window: + +![Localization Manager Example](Images/Localization-manager-example.png) + +The 'Name' column represents the key, and the 'Default Culture' column represents the text in English. + +Using the plus symbol, you can create a new translation. Let's create a new one called `example_translation`. +Clicking the plus symbol, this window appears: + +![Localization Manager Example](Images/Localization-manager-new.png) + +Type your key in the top box, and Rider will select the current `.resx` file automatically. + +This is how the new key will look: + +![Localization Manager Example](Images/Localization-manager-created.png) + +You can now enter the text you want in the right column labelled 'Default Culture'. + +Once this is created, save your changes and this key will now be available to use in a `Strings.cs` file, like so: + +```csharp +public static readonly TranslatableString ExampleTranslation = create("example_translation"); +``` + +## Using translations + +Now that we've created a translation, it's time to use it in Lighthouse. + +There are a couple ways of doing this. I will go over the two most important ones here. + +### Method 1: Using it in a Razor (`.cshtml`) page + +This is the easiest method, and most common. Make sure you've imported the translation lists at the top of the file: + +```cshtml +@using LBPUnion.ProjectLighthouse.Localization.StringLists +``` + +Now, as long as your page extends `BaseLayout`, you can translate them like so: + +```csharp +@Model.Translate(BaseLayoutStrings.ExampleTranslation) +``` + +This method will automatically determine the language of the user and provide a translation for it. + +If your string is formatted (oh, strings can be formatted by the way with the typical `{0} {1}, etc.` method) +you can provide the parameters as you would expect to be able to: + +```csharp +@Model.Translate(BaseLayoutStrings.ExampleTranslationFormatted, foo, bar, 123) +``` + +### Method 2: `TranslatableString.Translate()` + +todo \ No newline at end of file