From 56e638c5c79b7ad34c0088486afcfa4618f975ba Mon Sep 17 00:00:00 2001 From: Kazuki Y Date: Tue, 3 Oct 2023 11:10:56 +0900 Subject: [PATCH 1/6] =?UTF-8?q?=F0=9F=94=A7=E7=B4=B0=E3=81=8B=E3=81=84?= =?UTF-8?q?=E8=A8=80=E3=81=84=E5=9B=9E=E3=81=97=E3=82=92=E4=BF=AE=E6=AD=A3?= =?UTF-8?q?=20/=20=E8=BF=BD=E5=8A=A0=20Wiki=20->=20Discord=20=E3=81=8C=20-?= =?UTF-8?q?>=20=E3=81=AF=20=E6=B6=88=E3=81=99=E3=82=8B=20->=20=E6=B6=88?= =?UTF-8?q?=E3=81=99=20=E7=BF=BB=E8=A8=B3=E3=82=92=E4=B8=80=E3=81=A4?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ja.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/ja.json b/ja.json index 62e2e4e..1263b7e 100644 --- a/ja.json +++ b/ja.json @@ -1683,18 +1683,18 @@ "CloudHome.Info.StorageUsed": "ストレージ使用量:", "CloudHome.Info.DashInfoTab.Title": "ようこそ!", - "CloudHome.Info.DashInfoDesktop": "まず知っておいてほしいこと! ダッシュメニュー がEscapeキーで開きます。 デスクトップを見る機能や、コントロールパネルのような機能があります。

わからないことがあれば、このディスプレイの情報をお読みください。 このメッセージを消するには下のボタンをクリックしてください。", - "CloudHome.Info.DashInfoVR": "まず知っておいてほしいこと! ダッシュメニュー が B または Y ボタンで開きます。 デスクトップを見る機能や、コントロールパネルのような機能があります。

わからないことがあれば、このディスプレイの情報をお読みください。 このメッセージを消するには下のボタンをクリックしてください。", - "CloudHome.Info.DashInfoVRNoButtons": "まず知っておいてほしいこと! ダッシュメニュー は円が一周するまでメニューボタンを押し続けると開きます。 デスクトップを見る機能や、コントロールパネルのような機能があります。

わからないことがあれば、このディスプレイの情報をお読みください。 このメッセージを消するには下のボタンをクリックしてください。", + "CloudHome.Info.DashInfoDesktop": "まず知っておいてほしいこと! ダッシュメニュー はEscapeキーで開きます。 デスクトップを見る機能や、コントロールパネルのような機能があります。

わからないことがあれば、このディスプレイの情報をお読みください。 このメッセージを消すには下のボタンをクリックしてください。", + "CloudHome.Info.DashInfoVR": "まず知っておいてほしいこと! ダッシュメニュー は B または Y ボタンで開きます。 デスクトップを見る機能や、コントロールパネルのような機能があります。

わからないことがあれば、このディスプレイの情報をお読みください。 このメッセージを消すには下のボタンをクリックしてください。", + "CloudHome.Info.DashInfoVRNoButtons": "まず知っておいてほしいこと! ダッシュメニュー は円が一周するまでメニューボタンを押し続けると開きます。 デスクトップを見る機能や、コントロールパネルのような機能があります。

わからないことがあれば、このディスプレイの情報をお読みください。 このメッセージを消すには下のボタンをクリックしてください。", "CloudHome.Info.GoToWiki": "Wikiを見る!", - "CloudHome.Info.GoToDiscord": "Wikiを見る!", + "CloudHome.Info.GoToDiscord": "Discordを見る!", "CloudHome.Info.ModerationTab.Title": "モデレーション!", "CloudHome.Info.ModerationTab.Content": "私達は安全を重視しています。 サポートが必要な場合や、ユーザーの通報が必要な場合は モデレーションポータルでチケットを作成してください。

ボランティアモデレーターの強力なチーム
コミュニティの安全を守ります! 質問がある時、ガイドライン違反の行為を見つけた時など、チケットでお知らせください。", "CloudHome.Info.InventoryTab.Title": "アイテムを保存!", - "CloudHome.Info.InventoryTab.Content": "ダッシュメニューインベントリーには アイテムやアバターが保存できます。

Essentials 楽しいおもちゃが入っています。 アイテムをダブルクリックして取り出してみましょう。", + "CloudHome.Info.InventoryTab.Content": "ダッシュメニューインベントリーには アイテムやアバターが保存できます。

Essentials には、楽しいおもちゃが入っています。 アイテムをダブルクリックして取り出してみましょう。", "CloudHome.Info.ToolsTab.Title": "ワールド内で制作!", "CloudHome.Info.ToolsTab.Content": "{appName} の特徴はゲーム内で簡単に創作や改変ができることです!

Essentials -> Tools から取り出せます。 ワールドを好みに合わせて編集しちゃいましょう!", @@ -1729,13 +1729,13 @@ "StickyNote.SpinMe": "クルクルしてみ?", "StickyNote.FruitPlate": "増える増える 不思議な果物", "StickyNote.EmptyForYou": "好きなものを飾ってね :)", - "StickyNote.RelevantLinks": "関連リンク!
<--

One could even call it a linking book", - "StickyNote.SunTool": "太陽パワーを あなたの手に!", + "StickyNote.RelevantLinks": "関連リンク!
<--

もしかしたら「リンク本」ともいえるかもね", + "StickyNote.SunTool": "太陽の​パワーを あなたの 手に!", "StickyNote.Bow": "弓を引いて 的を射抜け!", "StickyNote.Crossbow": "レバーアクションでリロード (セカンダリーボタン)", "StickyNote.Shade": "ひさしも動くよ", - "StickyNote.TheaterTablet": "このタブレットで 扇風機と窓の
色を変更!", - "StickyNote.ControlTablet": "このタブレットで 家を操作!", + "StickyNote.TheaterTablet": "この​タブレットで​扇風機と​窓の色を​変更!", + "StickyNote.ControlTablet": "この​タブレットで​家を​アレンジしてみよう!", "StickyNote.RotateMeDesktop": "Eを押しながら回転!", "StickyNote.RotateMeVR": "回してみてね", From 27f6f1ed7f504ca9880c11ef47325a012c204f5b Mon Sep 17 00:00:00 2001 From: rabbuttz <49971163+rabbuttz@users.noreply.github.com> Date: Tue, 3 Oct 2023 13:10:02 +0900 Subject: [PATCH 2/6] Update ja.json --- ja.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja.json b/ja.json index a809522..f72f97f 100644 --- a/ja.json +++ b/ja.json @@ -379,7 +379,7 @@ "Indicator.ServerStatus": "クラウドステータス", "Indicator.ServerStatus.Good": "良好", "Indicator.ServerStatus.Slow": "重い", - "Indicator.ServerStatus.Down": "落ちてる!", + "Indicator.ServerStatus.Down": "サーバーダウン", "Indicator.ServerStatus.NoInternet": "インターネット無し", "Indicator.Sync.AllSynced": "シンク完了", From 09ff8bb90aa3d096e0da9e4f4559b426884f6189 Mon Sep 17 00:00:00 2001 From: rabbuttz <49971163+rabbuttz@users.noreply.github.com> Date: Tue, 3 Oct 2023 13:11:03 +0900 Subject: [PATCH 3/6] Update ja.json --- ja.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja.json b/ja.json index f72f97f..14f3ad0 100644 --- a/ja.json +++ b/ja.json @@ -1,6 +1,6 @@ { "localeCode": "ja", - "authors": ["orange", "Melnus", "Aesc", "kazu"], + "authors": ["orange", "Melnus", "Aesc", "kazu","Rabbuttz"], "messages": { "General.OK": "OK", "General.Start": "開始", From 2fc1547b9bcecc2118849901c1159e4b73cc8c64 Mon Sep 17 00:00:00 2001 From: rabbuttz <49971163+rabbuttz@users.noreply.github.com> Date: Tue, 3 Oct 2023 13:13:49 +0900 Subject: [PATCH 4/6] Update ja.json --- ja.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ja.json b/ja.json index 14f3ad0..fd96dbe 100644 --- a/ja.json +++ b/ja.json @@ -380,7 +380,7 @@ "Indicator.ServerStatus.Good": "良好", "Indicator.ServerStatus.Slow": "重い", "Indicator.ServerStatus.Down": "サーバーダウン", - "Indicator.ServerStatus.NoInternet": "インターネット無し", + "Indicator.ServerStatus.NoInternet": "インターネットなし", "Indicator.Sync.AllSynced": "シンク完了", "Indicator.Sync.SyncingItems": "{item_count,plural, other {# 個のアイテムを}}シンク中({item_percent} %)", From 625bbd4f030e1090a8595cacd07934e9baa3d38a Mon Sep 17 00:00:00 2001 From: ENTERTWFUR <146863581+ENTERTWFUR@users.noreply.github.com> Date: Wed, 4 Oct 2023 00:02:31 +0500 Subject: [PATCH 5/6] ru.json First update for Russia Locale --- ru.json | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/ru.json b/ru.json index 5c2789e..b4cf027 100644 --- a/ru.json +++ b/ru.json @@ -1,6 +1,6 @@ { "localeCode": "ru", - "authors": ["GhostZ36", "BrotiwkA", "Shadow Panther"], + "authors": ["GhostZ36", "BrotiwkA", "Shadow Panther", "ENTERTHEWOLF"], "messages": { "General.OK": "OK", @@ -1405,6 +1405,31 @@ "Temporary.MMC.VotedAlready": "Вы уже голосовали за {voteTarget}.", "Temporary.MMC.VoteInvalid": "Голос некорректен, попробуйте снова.", + "Tools.Names.MultiTool": "Мульти инструмент" + "Tools.Names.CommonTools": "Обычный инструмент" + "Tools.Names.ManipulationTools": "Инструмент манипуляции" + "Tools.Names.InformationTools": "Инструмент информации" + "Tools.Names.GeometryLineBrush": "Кисть геометрических линий" + "Tools.Names.Developer": "Инструмент разработчика" + "Tools.Names.ComponentClone": "Копирование компонента" + "Tools.Names.ProtoFlux": "Инструмент ProtoFlux" + "Tools.Names.Material": "Инструмент материала" + "Tools.Names.Glue": "Клей" + "Tools.Names.Light": "Свет" + "Tools.Names.Shape": "Формы" + "Tools.Names.Microphone": "Микрофон" + "Tools.Names.GrabbableSetter": "Иструмент установки хватания" + "Tools.Names.PhysicalColliderSetter": "Установка физ.коллайдера" + "Tools.Names.MeshVisibility": "Инструмент видимости объекта" + "Tools.Names.CameraObjectVisibility": "Инструмент видимости объекта камеры" + "Tools.Names.Color": "Цвет" + "Tools.Names.Mesh": "Объект" + "Tools.Names.RiggedMeshTransfer": "Инструмент Переноса сетки" + "Tools.Names.Slicer": "Нож" + "Tools.Names.ControllerDiagnostic": "Диагностика контроллеров" + "Tools.Names.Measure": "Линейка" + "Tools.Names.Label": "Метка" + "Dummy": "Dummy" } } From 87f6581ecd98a94463a19aee7a4dbfd258517532 Mon Sep 17 00:00:00 2001 From: Richard Fox Date: Tue, 3 Oct 2023 12:41:15 -0700 Subject: [PATCH 6/6] feat(docs): update readme for clarity --- README.md | 146 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 75 insertions(+), 71 deletions(-) diff --git a/README.md b/README.md index 67045d6..5fe9d49 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -# APP Locale -This repository contains the locale assets for the core UI of [Resonite](https://resonite.com) and allow anyone to contribute translations. The contents of this repository will be periodically merged with the public build released on Steam (STEAM) and other platforms. +# Resonite Locale +This repository contains the locale assets for the core UI of [Resonite](https://resonite.com) and allows anyone to contribute translations. The contents of this repository will be periodically merged with the public build released on Steam (STEAM) and other platforms. -# Localization Status +## Localization Status Czech [cs] - 72.3% - Missing keys: 461 German [de] - 83.6% - Missing keys: 272 English (United Kingdom) [en-gb] - 1.7% - Missing keys: 1634 @@ -23,12 +23,71 @@ Turkish [tr] - 53.3% - Missing keys: 777 Chinese (China) [zh-cn] - 62.8% - Missing keys: 619 Chinese (Taiwan) [zh-tw] - 60.7% - Missing keys: 654 -Total keys: 1663 +Total keys: 1635 -# How To Contribute -If you'd like to contribute translations, create a branch of fork of the repository, make the changes and once they are ready to be merged create a Pull Request, so the contributions can be checked and merged. You don't need to translate everything at once, if you cover part of the UI, the changes can be merged, with more translations coming later. +## How To Contribute +If you'd like to contribute translations, create a fork of the repository, make the changes and **once they are ready** to be merged create a Pull Request, so the contributions can be checked and merged. You don't need to translate everything at once, if you cover part of the UI, the changes can be merged, with more translations coming later. -# Do's and don'ts +### Translating the Store descriptions +If you're like, you can help translate the store descriptions as well (this is used on Steam for example), but we consider those highly optional since it's quite a lot of text. If you don't want to translate those, don't worry about them! The store descriptions do not count towards the translation completeness percentage and are provided in separate files. + +If you do translate them and you haven't added a credit yet, put your name in the regular .json file for translations of in-game strings, even if you haven't translated any in-game strings. + +### If you're contributing a new language +1. [Create a new Issue](https://github.com/Yellow-Dog-Man/Locale) for given language in format "Language [lang-code]", for example "English [en]", which will help coordinate efforts of different translators. +1. Verify that our' ork of ICU MessageFormat.NET has pluralizer for your language, by checking the "AddStandardPluralizers()" function in this file: https://github.com/YellowDogMan/messageformat.net/blob/master/src/Jeffijoe.MessageFormat/Formatting/Formatters/PluralFormatter.cs + +If you can't find your language code in this file, please make a Issue either on in this repository. + +Alternatively you can implement the pluralizer yourself based on the reference from the Unicode CLDR repository: https://github.com/unicode-org/cldr/blob/master/common/supplemental/plurals.xml and make a pull request for it to be merged with our fork or MessageFormat.NET + +3) Add a new [lang-code].json file to your fork. We highly recommend creating a skeleton file first without any translation strings, just containing the Locale and Authors and creating a pull request, so it's clearer to other contributors that translations are being worked on by someone. + +### Contributing translations to a language +If you'd like to contribute translations for existing language file (or one you have just created), we recommend the following: + +1) Make a fork of the repository or your own branch. +2) Update the language file, either by modifying the translation strings or adding new ones for missing translations. +3) Ensure you do not have any left-over English strings in the file. Your file should only contain actually translated strings. Any missing strings will automatically fallback (see below for details) +4) Ensure your modified translation file works correctly inside Resonite (see below how to test) +5) Create a Pull Request for your translations to be merged into the main repository. After merging they will be available publicly in the next public build of Resonite. + +As we develop our platform, we'll be constantly adding new strings in English or modifying the existing ones. We recommend watching the repository for activity through GitHub, so you can get notified when there are changes and new strings to be translated. + +### Collaborating & Conflicts +Sometimes when translating, multiple users can translate the same area/section at the same time. This results in a Conflict, as the Resonite Team usually cannot speak the language. We're unable to decide which PR should be merged. When a conflict occurs any PRs involved will be marked with a Conflicts label. Please work with other translators of the language to resolve any conflicts so that the team can proceed to merge PRs clearly. + +### Testing your translation +As you work on the translation we recommend that you periodically check it inside of Resonite. This will not only help ensure that you don't have any syntax errors, but also make sure that the strings are correct in the context. + +To test the translation, find folder where Resonite.exe is installed (on Steam, you can do so by right clicking Resonite, going to Properties -> LOCAL FILES -> BROWSE LOCAL FILES...) and then locate the "Locale" folder. Simply place your modified file into this folder and Resonite will load it up. + +By default, Resonite uses your system locale to determine which file to load. You can override this by going to Settings and changing the "Override Locale" to a different language code. + +- You can edit the translation file on the fly without shutting down Resonite. To force it to reload, change the locale to "en" and then back to your own. +- Note that while most UI will change language immediately, not all of it would. Simply close and reopen the UI dialog to load the translated strings +- If the string is showing in English, you probably have a typo in the string key. It needs to match exactly +- If the translation isn't loading in Resonite, it is likely JSON syntax error preventing it from being loaded +- If you see "ERROR!!!" instead of your translated string, you have a syntax error in the particular string. Check Resonite's log file, which will contain details. + +### If you use an external tool to do the translation and the JSON structure is mangled +You can use the python script in this repository: CleanJSON.py + +For example to clean the french json, `./CleanJSON.py --en en.json --lang fr.json --out fr.json.cleaned` + +```usage: CleanJSON.py [-h] [--en en_path] [--lang lang_path] [--out out_path] + +This script will reformat a Babel style JSON for locales to match the en.json +baseline formatting for git changes purposes. + +optional arguments: + -h, --help show this help message and exit + --en en_path The path to the en.json locale file. + --lang lang_path The path to the LANG.json locale file to clean. + --out out_path The path to save the formatted file. +``` + +## Do's and Don'ts - Make sure the .json locale file is UTF8 encoded - Always keep the "Dummy" : "Dummy" entry at the bottom of the file. This way you don't have to remember to remove the comma at the end of the last entry every time - Copy & Paste the whole content of the file into this online validator to ensure you don't have any syntax errors: https://jsonformatter.curiousconcept.com/ @@ -42,47 +101,8 @@ If you'd like to contribute translations, create a branch of fork of the reposit - DON'T correct mistakes in the string keys, only report them. They will be fixed by a script, which will apply the correction to all locales at once. - DON'T submit purely machine translated locales. Those often result in odd and confusing results for user interfaces. Using machine translation as basis for manual translation is ok. -# Translating the Store descriptions -If you're like, you can help translate the store descriptions as well (this is used on Steam for example), but we consider those highly optional since it's quite a lot of text. If you don't want to translate those, don't worry about them! The store descriptions do not count towards the translation completeness percentage and are provided in separate files. - -If you do translate them and you haven't added a credit yet, put your name in the regular .json file for translations of in-game strings, even if you haven't translated any in-game strings. - -# If you're contributing a new language -1. [Create a new Issue](https://github.com/Yellow-Dog-Man/Locale) for given language in format "Language [lang-code]", for example "English [en]", which will help coordinate efforts of different translators. -1. Verify that our' ork of ICU MessageFormat.NET has pluralizer for your language, by checking the "AddStandardPluralizers()" function in this file: https://github.com/YellowDogMan/messageformat.net/blob/master/src/Jeffijoe.MessageFormat/Formatting/Formatters/PluralFormatter.cs - -If you can't find your language code in this file, please make a Issue either on in this repository. - -Alternatively you can implement the pluralizer yourself based on the reference from the Unicode CLDR repository: https://github.com/unicode-org/cldr/blob/master/common/supplemental/plurals.xml and make a pull request for it to be merged with our fork or MessageFormat.NET - -3) Add a new [lang-code].json file to your fork. We highly recommend creating a skeleton file first without any translation strings, just containing the Locale and Authors and creating a pull request, so it's clearer to other contributors that translations are being worked on by someone. - -# Contributing translations to a language -If you'd like to contribute translations for existing language file (or one you have just created), we recommend the following: - -1) Make a fork of the repository or your own branch. -2) Update the language file, either by modifying the translation strings or adding new ones for missing translations. -3) Ensure you do not have any left-over English strings in the file. Your file should only contain actually translated strings. Any missing strings will automatically fallback (see below for details) -4) Ensure your modified translation file works correctly inside APP (see below how to test) -5) Create a Pull Request for your translations to be merged into the main repository. After merging they will be available publicly in the next public build of APP. - -As we develop our platform, we'll be constantly adding new strings in English or modifying the existing ones. We recommend watching the repository for activity through GitHub, so you can get notified when there are changes and new strings to be translated. - -# Testing your translation -As you work on the translation we recommend that you periodically check it inside of APP. This will not only help ensure that you don't have any syntax errors, but also make sure that the strings are correct in the context. - -To test the translation, find folder where APP.exe is installed (on Steam, you can do so by right clicking APP, going to Properties -> LOCAL FILES -> BROWSE LOCAL FILES...) and then locate the "Locale" folder. Simply place your modified file into this folder and APP will load it up. - -By default, APP uses your system locale to determine which file to load. You can override this by going to Settings and changing the "Override Locale" to a different language code. - -- You can edit the translation file on the fly without shutting down APP. To force it to reload, change the locale to "en" and then back to your own. -- Note that while most UI will change language immediately, not all of it would. Simply close and reopen the UI dialog to load the translated strings -- If the string is showing in English, you probably have a typo in the string key. It needs to match exactly -- If the translation isn't loading in APP, it is likely JSON syntax error preventing it from being loaded -- If you see "ERROR!!!" instead of your translated string, you have a syntax error in the particular string. Check APP's log file, which will contain details. - -# The ICU MessageFormat Syntax for translation strings -APP uses the ICU MessageFormat Syntax defined by the Unicode organization for its localized strings. This offers high amount of flexibility on how you translate strings and ensures that you can correctly follow the grammar rules of your language, particularly with regards to pluralization (e.g. displaying "1 item" vs "1 items"). This is why it's important to ensure that your language has a pluralizer implemented in our fork of MessageFormat.NET +## The ICU MessageFormat Syntax for translation strings +Resonite uses the ICU MessageFormat Syntax defined by the Unicode organization for its localized strings. This offers high amount of flexibility on how you translate strings and ensures that you can correctly follow the grammar rules of your language, particularly with regards to pluralization (e.g. displaying "1 item" vs "1 items"). This is why it's important to ensure that your language has a pluralizer implemented in our fork of MessageFormat.NET To learn more about the ICU MessageFormat Syntax check the following links: https://unicode-org.github.io/icu/userguide/format_parse/messages/ @@ -101,7 +121,7 @@ Another common syntax is using the {variable, select, ...} form. This lets you m Please let us know if you have any questions or are unsure about certain things. -# Language codes and fallbacks +## Language codes and fallbacks We uses the IETF language tags (https://en.wikipedia.org/wiki/IETF_language_tag) to load locales. These consist of a single primary language tag (typically two-letter language code from ISO 639-1 or a three-letter code from ISO 639-2 (1998), ISO 639-3 (2007) or ISO 639-5 (2008)) and and optional region sub-tag with country code. When loading locale file, we will first check for the most specific locale file. Then it will load any missing strings from the general locale file and last it will load any missing strings from the English locale. @@ -112,31 +132,15 @@ We recommend putting most translations into the general language file (single tw Any strings you don't translate at all will also fall back into their English variants, so you don't have to worry about missing some of them, they can be translated later (or by another contributor). This also ensures that newly added strings in the English will show up and can be gradually translated as they come. -# What if I find string that cannot be translated? -While majority of APP's UI has been converted to the localization system, there are likely a few stragglers and some parts that aren't translatable right now. If you encounter such place, create an Issue on this repository, ideally with screenshot of the non-translatable part, so we can convert it as well. +## FAQ +### What if I find string that cannot be translated? +While majority of Resonite's UI has been converted to the localization system, there are likely a few stragglers and some parts that aren't translatable right now. If you encounter such place, create an Issue on this repository, ideally with screenshot of the non-translatable part, so we can convert it as well. -Currently there are a few known parts that cannot be translated, but are planned to: +Currently there are a few known parts that cannot be translated, but are planned to be supported at a later date: - Enumerations (e.g. certain tool options that cycle through several options) - Component names and categories (component names will still show original for technical reasons, but will show optional translation for non-English languages) - ProtoFlux node names and categories (same as above) - Component fields (those will only show optional translated names on hover once tooltip system is implemented) -# If you use an external tool to do the translation and the JSON structure is mangled -You can use the python script in this repository: CleanJSON.py - -For example to clean the french json, `./CleanJSON.py --en en.json --lang fr.json --out fr.json.cleaned` - -```usage: CleanJSON.py [-h] [--en en_path] [--lang lang_path] [--out out_path] - -This script will reformat a Babel style JSON for locales to match the en.json -baseline formatting for git changes purposes. - -optional arguments: - -h, --help show this help message and exit - --en en_path The path to the en.json locale file. - --lang lang_path The path to the LANG.json locale file to clean. - --out out_path The path to save the formatted file. -``` - -# Any questions? -If you have questions or are unsure about something, you can create an Issue on this repository or reach out to our team on the official Discord: https://discord.gg/resonite +### Any other questions? +If you have questions or are unsure about something, you can create an Issue on this repository to ask a question