1
0
forked from me/IronOS

Merge branch 'master' into fix/1116

This commit is contained in:
Ben V. Brown
2021-12-19 19:09:17 +11:00
committed by GitHub
13 changed files with 2225 additions and 1478 deletions

View File

@@ -19,7 +19,7 @@ jobs:
run: chmod +x setup.sh && chmod +x source/build.sh && sudo mkdir -p /build/cache && sudo chmod -R 777 /build run: chmod +x setup.sh && chmod +x source/build.sh && sudo mkdir -p /build/cache && sudo chmod -R 777 /build
- name: Cached compiler source files - name: Cached compiler source files
uses: actions/cache@v2.1.6 uses: actions/cache@v2.1.7
env: env:
cache-name: cache-compilers cache-name: cache-compilers
with: with:
@@ -66,7 +66,7 @@ jobs:
run: chmod +x setup.sh && chmod +x source/build.sh && sudo mkdir -p /build/cache && sudo chmod -R 777 /build run: chmod +x setup.sh && chmod +x source/build.sh && sudo mkdir -p /build/cache && sudo chmod -R 777 /build
- name: Cached compiler source files - name: Cached compiler source files
uses: actions/cache@v2.1.6 uses: actions/cache@v2.1.7
env: env:
cache-name: cache-compilers cache-name: cache-compilers
with: with:
@@ -130,7 +130,7 @@ jobs:
run: chmod +x setup.sh && chmod +x source/build.sh && sudo mkdir -p /build/cache && sudo chmod -R 777 /build run: chmod +x setup.sh && chmod +x source/build.sh && sudo mkdir -p /build/cache && sudo chmod -R 777 /build
- name: Cached compiler source files - name: Cached compiler source files
uses: actions/cache@v2.1.6 uses: actions/cache@v2.1.7
env: env:
cache-name: cache-compilers cache-name: cache-compilers
with: with:

View File

@@ -1,30 +1,86 @@
# Development # Development
Building this software can be performed two ways, using the STMCubeIDE or using command line tools. Building this software can be performed two ways: using the STM32CubeIDE or using command line tools.
## STM Cube IDE ## STM32CubeIDE
The easiest way to start working using the STM Cube IDE is to create a new project for the STM32F103RCTx. The easiest way to start working with the STM32CubeIDE is to create a new project for the STM32F103RCTx.
Then once this is created remove the auto-generated source code. Once this is created, remove the auto-generated source code.
Next drag the contents of the `source` folder into the project and choose to link to files. Next, drag the contents of the `source` folder into the project and choose to link to files.
You will need to update the build settings for include paths & point to the new `.ld` linker file You will need to update the build settings for include paths and point to the new `.ld` linker file.
## Developing with command line tools & building a release ## Command line tools and building a release
In the `source` folder there is a makefile that can be used to build the repository using command line tools. In the `source` folder there is a `Makefile` that can be used to build the repository using command line tools.
when running the `make` command, specify which model of the device & the language you would like to use. When running the `make` command, specify which model of the device and the language(s) you would like to use.
`make -j8 lang=EN model=TS80` ### macOS
To build a release instead, run the build.sh script. This will update translations and also build every language for both TS100 and TS80 models. Use the following steps to set up a build environment for IronOS on the command line (in Terminal).
1. [Follow steps 1 3 here to install the toolchain](https://github.com/glegrain/STM32-with-macOS#0---installing-the-toolchain) needed to compile for STM32 microcontrollers.
2. Install `python`:
```
brew install python
```
3. (Optional) Update `pip` so it doesn't warn you about being out-of-date:
```
python3 -m pip install --upgrade pip
```
4. Change to the `source` directory:
```
cd source
```
5. Create a Python virtual environment for IronOS named `ironos-venv` to keep your Python installation clean:
```
python3 -m venv ironos-venv
```
6. Activate the Python virtual environment:
```
source ironos-venv/bin/activate
```
7. Install the dependencies required to run `make-translation.py`:
```
pip install bdflib
```
8. All done! See some examples below for how you can build your own IronOS.
### Examples
To build a single language Simplified Chinese firmware for the TS80P with 8 simultaneous jobs:
```
make -j8 model=TS80P firmware-ZH_CN
```
To build a European multi-language firmware for the Pinecil with as many simultaneous jobs as there are logical processors on Linux:
```
make -j$(nproc) model=Pinecil firmware-multi_European
```
To build a Cyrillic compressed multi-language firmware for the Pinecil with as many simultaneous jobs as there are logical processors on macOS:
```
make -j$(sysctl -n hw.logicalcpu) model=Pinecil firmware-multi_compressed_Bulgarian+Russian+Serbian+Ukrainian
```
To build a custom multi-language firmware including English and Simplified Chinese for the TS80:
```
make -j8 model=TS80 custom_multi_langs="EN ZH_CN" firmware-multi_Custom
```
To build a custom compressed multi-language firmware including German, Spanish, and French for the TS100 (note if `model` is unspecified, it will default to `TS100`):
```
make -j8 custom_multi_langs="DE ES FR" firmware-multi_compressed_Custom
```
To build a release instead, run the `build.sh` script. This will update translations and also build every language for all device models. For macOS users, replace `make -j$(nproc)` in the script with `make -j$(sysctl -n hw.logicalcpu)` before running.
## Updating languages ## Updating languages
To update the language translation files & associated font map, execute the `make_translation.py` code from the translations directory. To update the language translation files and their associated font maps, execute the `make_translation.py` code from the `Translations` directory.
## Building Pinecil ## Building Pinecil
I highly recommend using the command line tools and using docker to run the compiler. I highly recommend using the command line tools and using Docker to run the compiler.
It's a bit more fussy on setup than the STM tooling and this is by far the easiest way. It's a bit more fussy on setup than the STM tooling, and this is by far the easiest way.
If you _need_ an IDE I have used [Nuclei's IDE](https://nucleisys.com/download.php) If you _need_ an IDE I have used [Nuclei's IDE](https://nucleisys.com/download.php).
And follow same idea as the STM Cube IDE notes above. Follow the same idea as the STM Cube IDE notes above.

View File

@@ -308,6 +308,7 @@
<select v-model="fontToAdd"> <select v-model="fontToAdd">
<!-- <option value="ascii_basic">ascii_basic: ASCII Basic</option> --> <!-- <option value="ascii_basic">ascii_basic: ASCII Basic</option> -->
<option value="latin_extended">latin_extended: Latin Extended</option> <option value="latin_extended">latin_extended: Latin Extended</option>
<option value="greek">greek: Greek Glyphs</option>
<option value="cyrillic">cyrillic: Cyrillic Glyphs</option> <option value="cyrillic">cyrillic: Cyrillic Glyphs</option>
<option value="cjk">cjk: Chinese/Japanese/Korean</option> <option value="cjk">cjk: Chinese/Japanese/Korean</option>
</select> </select>

View File

@@ -326,6 +326,70 @@ def get_font_map_latin_extended() -> Dict[str, bytes]:
return font return font
def get_font_map_greek() -> Dict[str, bytes]:
font = {
# U+0370..U+03FF Greek and Coptic
"Έ": b"\x06\xFC\xFC\x8C\x8C\x8C\x8C\x8C\x8C\x0C\x0C\x00\x00\x3F\x3F\x31\x31\x31\x31\x31\x31\x30\x30\x00",
"Α": b"\x00\x00\x00\xE0\xFC\x1F\x1F\xFC\xE0\x00\x00\x00\x00\x38\x3F\x07\x06\x06\x06\x06\x07\x3F\x38\x00",
"Β": b"\x00\xFF\xFF\xC3\xC3\xC3\xC3\xE7\xFE\xBC\x00\x00\x00\x3F\x3F\x30\x30\x30\x30\x30\x39\x1F\x0F\x00",
"Γ": b"\x00\xFF\xFF\x03\x03\x03\x03\x03\x03\x03\x03\x00\x00\x3F\x3F\x00\x00\x00\x00\x00\x00\x00\x00\x00",
"Δ": b"\x00\x00\x00\xE0\xFC\x1F\x1F\xFC\xE0\x00\x00\x00\x00\x38\x3F\x37\x30\x30\x30\x30\x37\x3F\x38\x00",
"Ε": b"\x00\xFF\xFF\xC3\xC3\xC3\xC3\xC3\xC3\x03\x03\x00\x00\x3F\x3F\x30\x30\x30\x30\x30\x30\x30\x30\x00",
"Ζ": b"\x00\x03\x03\x03\x03\xC3\xE3\x33\x1F\x0F\x03\x00\x00\x30\x3C\x3E\x33\x31\x30\x30\x30\x30\x30\x00",
"Η": b"\x00\xFF\xFF\xC0\xC0\xC0\xC0\xC0\xC0\xFF\xFF\x00\x00\x3F\x3F\x00\x00\x00\x00\x00\x00\x3F\x3F\x00",
"Θ": b"\x00\xF0\xFC\x0E\xC7\xC3\xC3\xC7\x0E\xFC\xF0\x00\x00\x03\x0F\x1C\x38\x30\x30\x38\x1C\x0F\x03\x00",
"Ι": b"\x00\x00\x00\x03\x03\xFF\xFF\x03\x03\x00\x00\x00\x00\x00\x00\x30\x30\x3F\x3F\x30\x30\x00\x00\x00",
"Κ": b"\x00\xFF\xFF\xC0\xE0\xF0\x38\x1C\x0E\x07\x03\x00\x00\x3F\x3F\x00\x01\x03\x07\x0E\x1C\x38\x30\x00",
"Λ": b"\x00\x00\x00\xE0\xFC\x1F\x1F\xFC\xE0\x00\x00\x00\x00\x38\x3F\x07\x00\x00\x00\x00\x07\x3F\x38\x00",
"Μ": b"\x00\xFF\xFF\x1E\x78\xE0\xE0\x78\x1E\xFF\xFF\x00\x00\x3F\x3F\x00\x00\x01\x01\x00\x00\x3F\x3F\x00",
"Ν": b"\x00\xFF\xFF\x0E\x38\xF0\xC0\x00\x00\xFF\xFF\x00\x00\x3F\x3F\x00\x00\x00\x03\x07\x1C\x3F\x3F\x00",
"Ξ": b"\x00\x03\x03\xC3\xC3\xC3\xC3\xC3\xC3\x03\x03\x00\x00\x30\x30\x30\x30\x30\x30\x30\x30\x30\x30\x00",
"Ο": b"\x00\xF0\xFC\x0E\x07\x03\x03\x07\x0E\xFC\xF0\x00\x00\x03\x0F\x1C\x38\x30\x30\x38\x1C\x0F\x03\x00",
"Π": b"\x00\xFF\xFF\x03\x03\x03\x03\x03\x03\xFF\xFF\x00\x00\x3F\x3F\x00\x00\x00\x00\x00\x00\x3F\x3F\x00",
"Ρ": b"\x00\xFF\xFF\x83\x83\x83\x83\x83\xC7\xFE\x7C\x00\x00\x3F\x3F\x01\x01\x01\x01\x01\x01\x00\x00\x00",
"Σ": b"\x00\x03\x0F\x1F\x33\xE3\xE3\x03\x03\x03\x03\x00\x00\x30\x3C\x3E\x33\x31\x30\x30\x30\x30\x30\x00",
"Τ": b"\x00\x03\x03\x03\x03\xFF\xFF\x03\x03\x03\x03\x00\x00\x00\x00\x00\x00\x3F\x3F\x00\x00\x00\x00\x00",
"Υ": b"\x00\x03\x0F\x3C\xF0\xC0\xC0\xF0\x3C\x0F\x03\x00\x00\x00\x00\x00\x00\x3F\x3F\x00\x00\x00\x00\x00",
"Φ": b"\x00\xF8\xFC\x0E\x06\xFF\xFF\x06\x0E\xFC\xF8\x00\x00\x03\x07\x0E\x0C\x3F\x3F\x0C\x0E\x07\x03\x00",
"Χ": b"\x00\x03\x0F\x3C\xF0\xC0\xC0\xF0\x3C\x0F\x03\x00\x00\x30\x3C\x0F\x03\x00\x00\x03\x0F\x3C\x30\x00",
"Ψ": b"\x00\x3F\x7F\xE0\xC0\xFF\xFF\xC0\xE0\x7F\x3F\x00\x00\x00\x00\x00\x00\x3F\x3F\x00\x00\x00\x00\x00",
"Ω": b"\x00\xF0\xFC\x0E\x07\x03\x03\x07\x0E\xFC\xF0\x00\x00\x63\x6F\x7C\x70\x00\x00\x70\x7C\x6F\x63\x00",
"ά": b"\x00\x80\xC0\xE0\x60\x6C\x6E\x66\xC0\xE0\xE0\x00\x00\x0F\x1F\x38\x30\x30\x30\x30\x18\x3F\x3F\x20",
"έ": b"\x00\xE0\xF0\x30\x30\x36\x37\x33\x30\x70\x60\x00\x00\x1D\x3F\x33\x33\x33\x33\x33\x33\x38\x18\x00",
"ή": b"\x00\xE0\xE0\xC0\x60\x6C\x6E\xE6\xE0\xC0\x00\x00\x00\x1F\x1F\x00\x00\x00\x00\x00\x7F\x7F\x00\x00",
"ί": b"\x00\x00\x00\xEC\xEE\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1F\x3F\x30\x30\x30\x00\x00\x00\x00",
"α": b"\x00\x80\xC0\xE0\x60\x60\x60\x60\xC0\xE0\xE0\x00\x00\x0F\x1F\x38\x30\x30\x30\x30\x18\x3F\x3F\x20",
"β": b"\x00\x00\xC0\xE0\x30\x10\x10\x30\xE0\xC0\x00\x00\x00\x00\xFF\xFF\x21\x21\x21\x33\x3F\x1E\x00\x00",
"γ": b"\x00\x60\xE0\x80\x00\x00\x00\x00\x80\xE0\x60\x00\x00\x00\x01\x07\x1E\xF8\xF8\x1E\x07\x01\x00\x00",
"δ": b"\x00\x83\xC7\xEF\x7F\x7B\x73\x63\xE3\xC3\x83\x00\x00\x0F\x1F\x38\x30\x30\x30\x30\x38\x1F\x0F\x00",
"ε": b"\x00\xE0\xF0\x30\x30\x30\x30\x30\x30\x70\x60\x00\x00\x1D\x3F\x33\x33\x33\x33\x33\x33\x38\x18\x00",
"ζ": b"\x00\x83\xC3\xE3\x63\x63\x63\x73\x3F\x1F\x00\x00\x00\x0F\x1F\x38\x30\x30\x30\xF0\xE0\x00\x00\x00",
"η": b"\x00\xE0\xE0\xC0\x60\x60\x60\xE0\xE0\xC0\x00\x00\x00\x1F\x1F\x00\x00\x00\x00\x00\x7F\x7F\x00\x00",
"θ": b"\x00\xF0\xF8\x1C\x8C\x8C\x8C\x8C\x1C\xF8\xF0\x00\x00\x0F\x1F\x38\x31\x31\x31\x31\x38\x1F\x0F\x00",
"ι": b"\x00\x00\x00\xE0\xE0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1F\x3F\x30\x30\x30\x00\x00\x00\x00",
"κ": b"\x00\x00\xC0\xC0\x00\x00\x80\xC0\xC0\x00\x00\x00\x00\x00\x3F\x3F\x06\x0F\x1F\x39\x30\x00\x00\x00",
"λ": b"\x00\x00\x00\x00\xC0\xE0\xE0\xC0\x00\x00\x00\x00\x00\x30\x3C\x0F\x03\x00\x00\x03\x0F\x3C\x30\x00",
"μ": b"\x00\xF0\xF0\x00\x00\x00\x00\x00\xF0\xF0\x00\x00\x00\xFF\xFF\x0E\x0C\x0C\x0C\x06\x0F\x0F\x00\x00",
"ν": b"\x00\x60\xE0\x80\x00\x00\x00\x00\x80\xE0\x60\x00\x00\x00\x01\x07\x1E\x38\x38\x1E\x07\x01\x00\x00",
"ξ": b"\x00\x3C\xFE\xE7\xC3\xC3\xC3\xC3\x00\x00\x00\x00\x00\x0F\x1F\x39\x30\x30\xF0\xE0\x00\x00\x00\x00",
"ο": b"\x00\x80\xC0\xE0\x60\x60\x60\x60\xE0\xC0\x80\x00\x00\x0F\x1F\x38\x30\x30\x30\x30\x38\x1F\x0F\x00",
"π": b"\x00\x60\xE0\xE0\x60\x60\x60\xE0\xE0\x60\x00\x00\x00\x00\x3F\x3F\x00\x00\x00\x3F\x3F\x30\x00\x00",
"ρ": b"\x00\xE0\xE0\x60\x60\x60\x60\x60\xE0\xC0\x80\x00\x00\xFF\xFF\x0C\x18\x18\x18\x18\x1C\x0F\x07\x00",
"ς": b"\x00\x80\xC0\xE0\x60\x60\x60\xE0\xC0\x80\x00\x00\x00\x0F\x1F\x38\x30\x30\xF0\xE0\x03\x03\x00\x00",
"σ": b"\x00\x80\xC0\xE0\x60\x60\x60\xE0\xE0\xE0\x60\x00\x00\x0F\x1F\x38\x30\x30\x30\x38\x1F\x0F\x00\x00",
"τ": b"\x00\x60\x60\xE0\xE0\x60\x60\x60\x00\x00\x00\x00\x00\x00\x00\x1F\x3F\x30\x30\x30\x00\x00\x00\x00",
"υ": b"\x00\xE0\xE0\x00\x00\x00\x00\x00\xE0\xE0\x00\x00\x00\x0F\x1F\x38\x30\x30\x30\x38\x1F\x0F\x00\x00",
"φ": b"\x00\xC0\xE0\x70\x30\xF8\xF8\x30\x70\xE0\xC0\x00\x00\x07\x0F\x1C\x18\x7F\x7F\x18\x1C\x0F\x07\x00",
"χ": b"\x00\x70\xF0\xC0\x80\x00\x80\xC0\xF0\x70\x00\x00\x00\x70\x78\x1D\x0F\x07\x0F\x1D\x78\x70\x00\x00",
"ψ": b"\x00\xE0\xE0\x00\x00\xE0\xE0\x00\x00\xE0\xE0\x00\x00\x07\x0F\x1C\x18\x7F\x7F\x18\x1C\x0F\x07\x00",
"ω": b"\x00\xC0\xE0\x00\x00\x00\x00\x00\x00\xE0\xC0\x00\x00\x0F\x1F\x38\x38\x1E\x1E\x38\x38\x1F\x0F\x00",
"ό": b"\x00\x80\xC0\xE0\x60\x6C\x6E\x66\xE0\xC0\x80\x00\x00\x0F\x1F\x38\x30\x30\x30\x30\x38\x1F\x0F\x00",
"ύ": b"\x00\xE0\xE0\x00\x00\x0C\x0E\x06\xE0\xE0\x00\x00\x00\x0F\x1F\x38\x30\x30\x30\x38\x1F\x0F\x00\x00",
"ώ": b"\x00\xC0\xE0\x00\x00\x18\x1C\x0C\x00\xE0\xC0\x00\x00\x0F\x1F\x38\x38\x1E\x1E\x38\x38\x1F\x0F\x00",
}
return font
def get_font_map_cyrillic() -> Dict[str, bytes]: def get_font_map_cyrillic() -> Dict[str, bytes]:
font = { font = {
# U+0400..U+04FF Cyrillic # U+0400..U+04FF Cyrillic
@@ -750,6 +814,70 @@ def get_small_font_map_latin_extended() -> Dict[str, bytes]:
return font return font
def get_small_font_map_greek() -> Dict[str, bytes]:
font = {
# U+0370..U+03FF Greek and Coptic
"Έ": b"\x03\x7F\x49\x49\x49\x41",
"Α": b"\x7e\x09\x09\x09\x7e\x00",
"Β": b"\x7f\x49\x49\x49\x36\x00",
"Γ": b"\x7f\x01\x01\x01\x01\x00",
"Δ": b"\x70\x4C\x43\x4C\x70\x00",
"Ε": b"\x7f\x49\x49\x49\x41\x00",
"Ζ": b"\x61\x51\x49\x45\x43\x00",
"Η": b"\x7f\x08\x08\x08\x7f\x00",
"Θ": b"\x3E\x49\x49\x49\x3E\x00",
"Ι": b"\x00\x41\x7f\x41\x00\x00",
"Κ": b"\x7f\x08\x14\x22\x41\x00",
"Λ": b"\x70\x0C\x03\x0C\x70\x00",
"Μ": b"\x7f\x02\x0c\x02\x7f\x00",
"Ν": b"\x7f\x04\x08\x10\x7f\x00",
"Ξ": b"\x41\x49\x49\x49\x41\x00",
"Ο": b"\x3e\x41\x41\x41\x3e\x00",
"Π": b"\x7F\x01\x01\x01\x7F\x00",
"Ρ": b"\x7f\x09\x09\x09\x06\x00",
"Σ": b"\x63\x55\x49\x41\x41\x00",
"Τ": b"\x01\x01\x7f\x01\x01\x00",
"Υ": b"\x07\x08\x70\x08\x07\x00",
"Φ": b"\x0c\x12\x7f\x12\x0c\x00",
"Χ": b"\x63\x14\x08\x14\x63\x00",
"Ψ": b"\x07\x08\x7F\x08\x07\x00",
"Ω": b"\x5E\x61\x01\x61\x5E\x00",
"ά": b"\x38\x45\x45\x38\x7C\x40",
"έ": b"\x28\x55\x55\x44\x28\x00",
"ή": b"\x04\x79\x05\x04\xF8\x00",
"ί": b"\x04\x3D\x41\x40\x00\x00",
"α": b"\x38\x44\x44\x38\x7C\x40",
"β": b"\x7E\x21\x25\x25\x1A\x00",
"γ": b"\x0C\x10\x60\x10\x0C\x00",
"δ": b"\x30\x4B\x45\x49\x30\x00",
"ε": b"\x28\x54\x54\x44\x28\x00",
"ζ": b"\x00\x31\x49\x45\xC3\x00",
"η": b"\x04\x78\x04\x04\xF8\x00",
"θ": b"\x3E\x49\x49\x49\x3E\x00",
"ι": b"\x04\x3C\x40\x40\x00\x00",
"κ": b"\x00\x7C\x10\x28\x44\x00",
"λ": b"\x70\x0A\x04\x08\x70\x00",
"μ": b"\xFC\x10\x10\x3C\x20\x00",
"ν": b"\x1C\x20\x40\x20\x1C\x00",
"ξ": b"\x36\x49\x49\xC9\x00\x00",
"ο": b"\x38\x44\x44\x44\x38\x00",
"π": b"\x04\x7C\x04\x7C\x44\x00",
"ρ": b"\xF8\x24\x24\x24\x18\x00",
"ς": b"\x38\x44\x44\xC4\x04\x00",
"σ": b"\x38\x44\x44\x44\x3C\x04",
"τ": b"\x04\x3C\x44\x44\x00\x00",
"υ": b"\x3C\x40\x40\x40\x3C\x00",
"φ": b"\x18\x24\x7e\x24\x18\x00",
"χ": b"\x44\x24\x38\x48\x44\x00",
"ψ": b"\x1C\x20\x7C\x20\x1C\x00",
"ω": b"\x38\x44\x30\x44\x38\x00",
"ό": b"\x38\x45\x45\x44\x38\x00",
"ύ": b"\x3C\x41\x41\x40\x3C\x00",
"ώ": b"\x38\x45\x31\x44\x38\x00",
}
return font
def get_small_font_map_cyrillic() -> Dict[str, bytes]: def get_small_font_map_cyrillic() -> Dict[str, bytes]:
font = { font = {
# U+0400..U+04FF Cyrillic # U+0400..U+04FF Cyrillic
@@ -859,6 +987,7 @@ NAME_ASCII_BASIC: Final = "ascii_basic"
NAME_LATIN_EXTENDED: Final = "latin_extended" NAME_LATIN_EXTENDED: Final = "latin_extended"
NAME_CYRILLIC: Final = "cyrillic" NAME_CYRILLIC: Final = "cyrillic"
NAME_CJK: Final = "cjk" NAME_CJK: Final = "cjk"
NAME_GREEK: Final = "greek"
def get_font_maps_for_name( def get_font_maps_for_name(
@@ -870,5 +999,7 @@ def get_font_maps_for_name(
return get_font_map_latin_extended(), get_small_font_map_latin_extended() return get_font_map_latin_extended(), get_small_font_map_latin_extended()
elif font_name == NAME_CYRILLIC: elif font_name == NAME_CYRILLIC:
return get_font_map_cyrillic(), get_small_font_map_cyrillic() return get_font_map_cyrillic(), get_small_font_map_cyrillic()
elif font_name == NAME_GREEK:
return get_font_map_greek(), get_small_font_map_greek()
else: else:
raise ValueError("Invalid font name") raise ValueError("Invalid font name")

View File

@@ -0,0 +1,213 @@
{
"languageCode": "BE",
"languageLocalName": "Беларуская",
"fonts": ["ascii_basic", "latin_extended", "cyrillic"],
"messages": {
"SettingsCalibrationDone": "Каліброўка закончана!",
"SettingsCalibrationWarning": "Перад тым, як працягнуць, каліласка, упэўнецеся, што джала мае комнатную тэмпературу!",
"SettingsResetWarning": "Вы ўпэннены, што жадаеце зкінуць налады да першапачатковых значэнняў?",
"UVLOWarningString": "НАПРУГА--",
"UndervoltageString": "Нізкая напруга",
"InputVoltageString": "Сілкаванне В: ",
"WarningTipTempString": "Тэмп. джала: ",
"BadTipString": "ДЖАЛА--",
"SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "Чаканне...",
"WarningSimpleString": "ГОРАЧА!",
"WarningAdvancedString": "!!! ГАРАЧАЕ !!!\n!!! ДЖАЛА !!!",
"SleepingTipAdvancedString": "Джала:",
"IdleTipString": "Джала:",
"IdleSetString": " ->",
"TipDisconnectedString": "ДЖАЛА АДЛУЧАНА",
"SolderingAdvancedPowerPrompt": "Сілкаванне: ",
"OffString": "Выкл.",
"YourGainMessage": "Прырост:"
},
"messagesWarn": {
"ResetOKMessage": "Скід OK",
"SettingsResetMessage": ["Налады", "зкінуты!"],
"NoAccelerometerMessage": ["Ня вызначаны", "акселерометр!"],
"NoPowerDeliveryMessage": ["Няма USB-PD IC", "выяўлены!"],
"LockingKeysString": "ЗАМКНУТЫ",
"UnlockingKeysString": "АДЫМКНУТЫ",
"WarningKeysLockedString": "!ЗАМКНУТЫ!",
"WarningThermalRunaway": ["Цеплавы", "Уцякач"]
},
"characters": {
"SettingRightChar": "П",
"SettingLeftChar": "Л",
"SettingAutoChar": "А",
"SettingOffChar": "O",
"SettingSlowChar": "М",
"SettingMediumChar": "С",
"SettingFastChar": "Х",
"SettingStartNoneChar": "В",
"SettingStartSolderingChar": "П",
"SettingStartSleepChar": "Ч",
"SettingStartSleepOffChar": "К",
"SettingSensitivityOff": "А",
"SettingSensitivityLow": "Н",
"SettingSensitivityMedium": "С",
"SettingSensitivityHigh": "В",
"SettingLockDisableChar": "А",
"SettingLockBoostChar": "Т",
"SettingLockFullChar": "П",
"SettingNAChar": "Н/Д"
},
"menuGroups": {
"PowerMenu": {
"text2": ["Налады", "сілкавання"],
"desc": "Крыніца сілкавання і мінімальная напруга на ячэйку"
},
"SolderingMenu": {
"text2": ["Налады", "пайкі"],
"desc": "Налады пайкі"
},
"PowerSavingMenu": {
"text2": ["Рэжымы", "сну"],
"desc": "Налады рэжыму чакання"
},
"UIMenu": {
"text2": ["Налады", "інтэрфейсу"],
"desc": "Карыстальніцкія налады знешняга выгляду"
},
"AdvancedMenu": {
"text2": ["Дадатковыя", "налады"],
"desc": "Дадатковыя налады"
}
},
"menuOptions": {
"DCInCutoff": {
"text2": ["Крыніца", "сілкавання"],
"desc": "Крыніца сілкавання. Усталюе напругу адсечкі. (DC 10В) (S 3,3В на ячэйку, без абмежавання магутнасці)"
},
"SleepTemperature": {
"text2": ["Тэмп.", "чакання"],
"desc": "Тэмпература рэжыму чакання"
},
"SleepTimeout": {
"text2": ["Таймаўт", "чакання"],
"desc": "Час да пераходу ў рэжым чакання (Хвіліны | Секунды)"
},
"ShutdownTimeout": {
"text2": ["Таймаут", "выключэння"],
"desc": "Час да адключэння паяльніка (Хвіліны)"
},
"MotionSensitivity": {
"text2": ["Адчувальнасць", "акселерометра"],
"desc": "Адчувальнасць акселерометра (0=Выкл. | 1=Мін. | ... | 9=Макс.)"
},
"TemperatureUnit": {
"text2": ["Адзінкі", "тэмпературы"],
"desc": "Адзінкі вымярэння тэмпературы (C=Цэльcія | F=Фарэнгейта)"
},
"AdvancedIdle": {
"text2": ["Падрабязны", "рэжым чакання"],
"desc": "Адлюстроўваць дэталёвую инфармацыю паменьшаным шрыфтом на экране чакання"
},
"DisplayRotation": {
"text2": ["Арыентацыя", "экрану"],
"desc": "Арыентацыя экрану (П=Правая рука | Л=Левая рука | А=Аўта)"
},
"BoostTemperature": {
"text2": ["t° турба", "рэжыму"],
"desc": "Тэмпература джала ў турба-рэжыме"
},
"AutoStart": {
"text2": ["Аўта", "старт"],
"desc": "Рэжым, у якім запускаецца паяльнік пры падачы сілкавання (В=Выкл. | П=Пайка | Ч=Чаканне | К=Чаканне пры комн. тэмп.)"
},
"CooldownBlink": {
"text2": ["Мігценне t°", "пры астуджэнні"],
"desc": "Міргаць тэмпературай на экране астуджэння, пакуль джага яшчэ гарачае"
},
"TemperatureCalibration": {
"text2": ["Каліброўка", "тэмпературы"],
"desc": "Каліброўка тэрмадатчыка джала"
},
"SettingsReset": {
"text2": ["Скід", "наладаў"],
"desc": "Скід наладаў да першапачатковых значэнняў"
},
"VoltageCalibration": {
"text2": ["Каліброўка", "напругі"],
"desc": "Каліброўка ўваходнай напругі (падоўжаны націск для выхаду)"
},
"AdvancedSoldering": {
"text2": ["Падрабязны", "экран пайкі"],
"desc": "Паказваць дэталёвую інформацыю на экране пайкі"
},
"ScrollingSpeed": {
"text2": ["Хуткацсь", "тексту"],
"desc": "Хуткасць гартання тэксту (М=марудна | Х=хутка)"
},
"QCMaxVoltage": {
"text2": ["Магутнасць", "сілкавання"],
"desc": "Магутнасць выкарыстоўваемай крыніцы сілкавання"
},
"PDNegTimeout": {
"text2": ["PD", "прыпынак"],
"desc": "Час чакання ўзгаднення PD з крокам 100 мс для сумяшчальнасці з некаторымі зараднымі зараднымі прыладамі QC (0: адключана)"
},
"PowerLimit": {
"text2": ["Межы", "магутнасці"],
"desc": "Максімальная магутнасць, якую можа выкарыстоўваць паяльнік (Ватт)"
},
"ReverseButtonTempChange": {
"text2": ["Інвертаваць", "кнопкі"],
"desc": "Інвертаваць кнопкі вымярэння тэмпературы"
},
"TempChangeShortStep": {
"text2": ["Крок тэмп.", "кар. нац."],
"desc": "Крок вымярэння тэмпературы пры кароткім націску кнопак"
},
"TempChangeLongStep": {
"text2": ["Крок тэмп.", "пад. нац."],
"desc": "Крок вымярэння тэмпературы пры падоўжаным націску кнопак"
},
"PowerPulsePower": {
"text2": ["Сіла імп.", "сілкав. Вт"],
"desc": "Сіла імпульса щтрымливаючага ад сну павербанку ці іншай крыніцы сілкавання"
},
"HallEffSensitivity": {
"text2": ["Эфект Хола", "адчувальнасць"],
"desc": "Узровень адчувальнасці датчыка хола ў рэжыме сну (А=Адключана | Н=Нізкі | С=Сярэдні | В=Высокі)"
},
"LockingMode": {
"text2": ["Дазволіць", "блок. кнопак"],
"desc": "Пры рабоце падоўжаны націск дзьвух кнопак блакуе іх (А=Адключана | Т=Толькі турба | П=Поўная блакіроўка)"
},
"MinVolCell": {
"text2": ["Мін.", "напр."],
"desc": "Мінімальная дазволеная напруга на ячэйку (3S: 3 - 3,7V | 4S: 2,4 - 3,7V)"
},
"AnimLoop": {
"text2": ["Зацыкленая", "анімацыя"],
"desc": "Зацыкленая анімацыя гузікаў у галоўным меню"
},
"AnimSpeed": {
"text2": ["Хуткасць", "анімацыі"],
"desc": "Хуткасць анімацыі гузікаў у галоўным меню (Мілісекунды) (А=Адключана | Н=Нізкі | С=Сярэдні | В=Высокі)"
},
"PowerPulseWait": {
"text2": ["Імпульс магутнасці", "час чакання"],
"desc": "Час чакання перад запускам кожнага імпульсу няспання (x 2.5 с)"
},
"PowerPulseDuration": {
"text2": ["Імпульс магутнасці", "працягласць"],
"desc": "Працягласць імпульсу няспання (x 250 мс)"
},
"LanguageSwitch": {
"text2": ["Мова:", " BY Беларуская"],
"desc": ""
},
"Brightness": {
"text2": ["Экран", "Яркасць"],
"desc": "Адрэгулюйце кантраснасць / яркасць OLED-экрана"
},
"ColourInversion": {
"text2": ["Экран", "Інвертаваць"],
"desc": "Інвертаваць колеры OLED-экрана"
}
}
}

View File

@@ -0,0 +1,340 @@
{
"languageCode": "EL",
"languageLocalName": "Greek",
"fonts": [
"ascii_basic",
"greek"
],
"tempUnitFahrenheit": true,
"messages": {
"SettingsCalibrationWarning": "Πριν προχωρήσετε, παρακαλώ σιγουρευτείτε πως η μύτη βρίσκεται σε θερμοκρασία δωματίου!",
"SettingsResetWarning": "Σίγουρα θέλετε επαναφορά αρχικών ρυθμίσεων;",
"UVLOWarningString": "Χαμηλ DC",
"UndervoltageString": "Υπόταση",
"InputVoltageString": "Είσοδος V: ",
"SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "Υπνος...",
"SleepingTipAdvancedString": "Μύτη:",
"IdleTipString": "Μύτη:",
"IdleSetString": " Set:",
"TipDisconnectedString": "ΧΩΡΙΣ ΜΥΤΗ",
"SolderingAdvancedPowerPrompt": "Ενέργεια: ",
"OffString": "Απ."
},
"messagesWarn": {
"ResetOKMessage": "Επαν. OK",
"SettingsResetMessage": [
"Κάποιες ρυθμ.",
"άλλαξαν"
],
"NoAccelerometerMessage": [
"Δεν εντοπίστηκε",
"επιταχυνσιόμετρο"
],
"NoPowerDeliveryMessage": [
"Δεν εντοπίστηκε",
"κύκλωμα USB-PD"
],
"LockingKeysString": "ΚΛΕΙΔ.",
"UnlockingKeysString": "ΞΕΚΛΕΙΔ.",
"WarningKeysLockedString": [
"ΚΛΕΙΔΩΜΕΝΑ",
"ΠΛΗΚΤΡΑ!"
],
"WarningThermalRunaway": [
"Θερμική",
"Φυγή"
]
},
"characters": {
"SettingRightChar": "R",
"SettingLeftChar": "L",
"SettingAutoChar": "Α",
"SettingOffChar": "0",
"SettingSlowChar": "Α",
"SettingMediumChar": "Μ",
"SettingFastChar": "Γ",
"SettingStartNoneChar": "0",
"SettingStartSolderingChar": "Κ",
"SettingStartSleepChar": "Ζ",
"SettingStartSleepOffChar": "Υ",
"SettingSensitivityOff": "0",
"SettingSensitivityLow": "Χ",
"SettingSensitivityMedium": "Μ",
"SettingSensitivityHigh": "Υ",
"SettingLockDisableChar": "Α",
"SettingLockBoostChar": "B",
"SettingLockFullChar": "Π",
"SettingNAChar": "Δ/Δ"
},
"menuGroups": {
"PowerMenu": {
"text2": [
"Ρυθμίσεις",
"ενέργειας"
],
"desc": "Ρυθμίσεις ενέργειας"
},
"SolderingMenu": {
"text2": [
"Ρυθμίσεις",
"κόλλησης"
],
"desc": "Ρυθμίσεις κόλλησης"
},
"PowerSavingMenu": {
"text2": [
"Λειτουργία",
"ύπνου"
],
"desc": "Ρυθμίσεις εξοικ. ενέργ."
},
"UIMenu": {
"text2": [
"Διεπαφή",
"χρήστη"
],
"desc": "Ρυθμίσεις διεπαφής χρήστη"
},
"AdvancedMenu": {
"text2": [
"Προηγμένες",
"ρυθμίσεις"
],
"desc": "Προηγμένες ρυθμίσεις"
}
},
"menuOptions": {
"DCInCutoff": {
"text2": [
"Πηγή",
"ενέργειας"
],
"desc": "Πηγή ενέργειας. Oρισμός τάσης απενεργοποίησης. (DC 10V) (S 3.3V ανα κυψέλη, απενεργοποίηση ενεργειακού ορίου)"
},
"SleepTemperature": {
"text2": [
"Θερμοκρ.",
"ύπνου"
],
"desc": "Θερμοκρασία μύτης σε λειτ. ύπνου"
},
"SleepTimeout": {
"text2": [
"Έναρξη",
"ύπνου"
],
"desc": "Χρονικό διάστημα πρίν την ενεργοποίηση λειτουργίας ύπνου (Δ=δευτ. | Λ=λεπτά)"
},
"ShutdownTimeout": {
"text2": [
"Έναρξη",
"απενεργ."
],
"desc": "Χρονικό διάστημα πρίν την απενεργοποίηση του κολλητηριού (Λ=λεπτά)"
},
"MotionSensitivity": {
"text2": [
"Ευαισθησία",
"κίνησης"
],
"desc": "0=off | 1=λιγότερο ευαίσθητο | ... | 9=περισσότερο ευαίσθητο"
},
"TemperatureUnit": {
"text2": [
"Μονάδες",
"θερμοκρασίας"
],
"desc": "C=Κελσίου | F=Φαρενάιτ"
},
"AdvancedIdle": {
"text2": [
"Λεπτομερής",
"οθ. αδράνειας"
],
"desc": "Προβολή λεπτομερών πληροφοριών σε μικρότερη γραμματοσειρά στην οθόνη αδράνειας"
},
"DisplayRotation": {
"text2": [
"Διάταξη",
"οθόνης"
],
"desc": "R=δεξιόχειρες | L=αριστερόχειρες | Α=αυτόματο"
},
"BoostTemperature": {
"text2": [
"Θερμοκ.",
"boost"
],
"desc": "Θερμοκρασία στη \"λειτουργία boost\""
},
"AutoStart": {
"text2": [
"Ζέσταμα",
"κατά την εν."
],
"desc": "0=off | Κ=θερμ. κόλλησης | Z=αναμονή σε θερμοκρασία ύπνου μέχρι την κίνηση | Υ=αναμονή χωρίς ζέσταμα μέχρι την κίνηση"
},
"CooldownBlink": {
"text2": [
"Αναβοσβήσιμο",
"ψύξης"
],
"desc": "Αναβοσβήσιμο της ενδειξης θερμοκρασίας κατά την παύση θέρμανσης όταν η μύτη είναι ακόμα καυτή"
},
"TemperatureCalibration": {
"text2": [
"Βαθμονόμηση",
"θερμοκρασίας;"
],
"desc": "Βαθμονόμηση αρχικής θερμοκρασίας μύτης"
},
"SettingsReset": {
"text2": [
"Επαναφορά",
"εργ. ρυθμίσεων;"
],
"desc": "Επαναφορά στις προεπιλεγμένες ρυθμίσεις"
},
"VoltageCalibration": {
"text2": [
"Βαθμονόμηση",
"τάσης εισόδου;"
],
"desc": "Έναρξη βαθμονόμησης τάσης εισόδου (κράτημα για έξοδο)"
},
"AdvancedSoldering": {
"text2": [
"Λεπτομερής",
"οθ. κόλλησης"
],
"desc": "Προβολή λεπτομερών πληροφοριών σε μικρότερη γραμματοσειρά στην οθόνη κόλλησης"
},
"ScrollingSpeed": {
"text2": [
"Ταχύτητα",
"κύλισης"
],
"desc": "Ταχύτητα κύλισης κειμένου (Α=αργά | Γ=γρήγορα)"
},
"QCMaxVoltage": {
"text2": [
"Τάση",
"QC"
],
"desc": "Μέγιστη τάση QC που να ζητά το κολλητήρι από το τροφοδοτικό"
},
"PDNegTimeout": {
"text2": [
"χρονικό όριο",
"PD"
],
"desc": "Χρονικό όριο διαπραγμάτευσης PD σε βήματα 100ms για συμβατότητα με κάποιους φορτιστές QC"
},
"PowerLimit": {
"text2": [
"Ενεργειακό",
"όριο"
],
"desc": "Μέγιστη ενέργεια που μπορεί να χρησιμοποιεί το κολλητήρι (W=watt)"
},
"ReverseButtonTempChange": {
"text2": [
"Αντιστροφή",
"πλήκτρων + -"
],
"desc": "Αντιστροφή διάταξης πλήκτρων στη ρύθμιση θερμοκρασίας"
},
"TempChangeShortStep": {
"text2": [
"Αλλαγή θερμοκ.",
"στιγμιαίο"
],
"desc": "Βήμα αλλαγής θερμοκρασίας σε στιγμιαίο πάτημα πλήκτρου"
},
"TempChangeLongStep": {
"text2": [
"Αλλαγή θερμοκ.",
"παρατεταμένο"
],
"desc": "Βήμα αλλαγής θερμοκρασίας σε παρατεταμένο πάτημα πλήκτρου"
},
"PowerPulsePower": {
"text2": [
"Παλμός",
"ενέργειας"
],
"desc": "Ένταση ενέργειας παλμού διατήρησης λειτουργίας (watt)"
},
"HallEffSensitivity": {
"text2": [
"Ευαισθ. αισθ. ",
"φαιν. Hall"
],
"desc": "Ευαισθησία του αισθητήρα φαινομένου Hall για εντοπισμό αδράνειας (0=off | Χ=χαμηλή | Μ=μέτρια | Υ=υψηλή)"
},
"LockingMode": {
"text2": [
"Κλείδωμα",
"πλήκτρων"
],
"desc": "Κατά την κόλληση, κρατήστε και τα δύο πλήκτρα για κλείδωμα (A=απενεργοποίηση | B=μόνο λειτ. boost | Π=πλήρες κλείδωμα)"
},
"MinVolCell": {
"text2": [
"Ελάχιστη",
"τάση"
],
"desc": "Ελάχιστη επιτρεπτή τάση ανα κυψέλη (3 σε σειρά: 3 - 3.7V | 4-6 σε σειρά: 2.4 - 3.7V)"
},
"AnimLoop": {
"text2": [
"Επανάληψη",
"κιν. εικονιδ."
],
"desc": "Επανάληψη κίνησης εικονιδίων στο αρχικό μενού"
},
"AnimSpeed": {
"text2": [
"Ταχύτητα",
"κιν. εικονιδ."
],
"desc": "Ρυθμός κίνησης εικονιδίων στο μενού (0=off | Α=αργός | Μ=μέτριος | Γ=γρήγορος"
},
"PowerPulseWait": {
"text2": [
"Καθυστέρηση",
"παλμού ενέργ."
],
"desc": "Καθυστέρηση πριν την ενεργοποίση παλμού διατήρησης λειτουργίας (x 2.5s)"
},
"PowerPulseDuration": {
"text2": [
"Διάρκεια",
"παλμού ενέργ."
],
"desc": "Διάρκεια παλμού διατήρησης ενέργειας (x 250ms)"
},
"LanguageSwitch": {
"text2": [
"Γλώσσα",
" GR Ελληνικά"
],
"desc": "Τρέχουσα γλώσσα λογισμικού"
},
"Brightness": {
"text2": [
"Αντίθεση",
"οθόνης"
],
"desc": "Ρύθμιση φωτεινότητας οθόνης OLED"
},
"ColourInversion": {
"text2": [
"Αντιστροφή",
"χρωμάτων"
],
"desc": "Αντιστροφή χρωμάτων οθόνης OLED"
}
}
}

View File

@@ -190,24 +190,24 @@
"desc": "Скорость анимации иконок в главном меню (Милисекунды) (О=Отключено | Н=Низкий | С=Средний | В=Высокий)" "desc": "Скорость анимации иконок в главном меню (Милисекунды) (О=Отключено | Н=Низкий | С=Средний | В=Высокий)"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": ["Power pulse", "wait time"], "text2": ["Пауза имп.", "питания с"],
"desc": "Time to wait before triggering every keep-awake pulse (x 2,5с)" "desc": "Пауза между импульсами удерживающими источник питания от сна (x 2,5с)"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": ["Power pulse", "duration"], "text2": ["Длина имп.", "питания мс"],
"desc": "Keep-awake-pulse duration (x 250мс)" "desc": "Длина импульса удерживающего от сна источник питания (x 250мс)"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": ["Язык:", " RU Русский"], "text2": ["Язык:", " RU Русский"],
"desc": "" "desc": ""
}, },
"Brightness": { "Brightness": {
"text2": ["Screen", "Brightness"], "text2": ["Яркость", "экрана"],
"desc": "Adjust the contrast/brightness of the OLED screen" "desc": "Настройки контраста/яркости OLED экрана"
}, },
"ColourInversion": { "ColourInversion": {
"text2": ["Screen", "Invert"], "text2": ["Инверт", "экрана"],
"desc": "Invert the colours of the OLED screen" "desc": "Инвертировать цвета на OLED экране"
} }
} }
} }

View File

@@ -202,12 +202,12 @@
"desc": "" "desc": ""
}, },
"Brightness": { "Brightness": {
"text2": ["Screen", "Brightness"], "text2": ["Яскравість", "екрану"],
"desc": "Adjust the contrast/brightness of the OLED screen" "desc": "Налаштування контрасту/яскравості OLED екрану"
}, },
"ColourInversion": { "ColourInversion": {
"text2": ["Screen", "Invert"], "text2": ["Інверт", "екрану"],
"desc": "Invert the colours of the OLED screen" "desc": "Налаштування контрасту/яскравості OLED екрану"
} }
} }
} }

View File

@@ -4,7 +4,7 @@
"fonts": ["ascii_basic", "cjk"], "fonts": ["ascii_basic", "cjk"],
"tempUnitFahrenheit": true, "tempUnitFahrenheit": true,
"messages": { "messages": {
"SettingsCalibrationWarning": "開始温度校正之前,請先確定雞咀係處於室温!", "SettingsCalibrationWarning": "開始温度校正之前,請先確定雞咀係處於室温!",
"SettingsResetWarning": "你係咪確定要將全部設定重設到預設值?", "SettingsResetWarning": "你係咪確定要將全部設定重設到預設值?",
"UVLOWarningString": "電壓過低", "UVLOWarningString": "電壓過低",
"UndervoltageString": "Undervoltage", "UndervoltageString": "Undervoltage",
@@ -21,8 +21,8 @@
"messagesWarn": { "messagesWarn": {
"ResetOKMessage": "已重設!", "ResetOKMessage": "已重設!",
"SettingsResetMessage": "設定已被重設!", "SettingsResetMessage": "設定已被重設!",
"NoAccelerometerMessage": ["No accelerometer", "detected!"], "NoAccelerometerMessage": "未能偵測加速度計",
"NoPowerDeliveryMessage": ["No USB-PD IC", "detected!"], "NoPowerDeliveryMessage": "未能偵測PD晶片",
"LockingKeysString": "已鎖定", "LockingKeysString": "已鎖定",
"UnlockingKeysString": "已解除鎖定", "UnlockingKeysString": "已解除鎖定",
"WarningKeysLockedString": "!撳掣鎖定!", "WarningKeysLockedString": "!撳掣鎖定!",
@@ -78,7 +78,7 @@
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": "待機温度", "text2": "待機温度",
"desc": "喺待機模式時嘅雞咀温度" "desc": "喺待機模式時嘅雞咀温度"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": "待機延時", "text2": "待機延時",
@@ -114,11 +114,11 @@
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": "降温時閃爍", "text2": "降温時閃爍",
"desc": "停止加熱之後,當雞咀仲係熱嗰陣閃爍畫面" "desc": "停止加熱之後,當雞咀仲係熱嗰陣閃爍畫面"
}, },
"TemperatureCalibration": { "TemperatureCalibration": {
"text2": "温度校正?", "text2": "温度校正?",
"desc": "開始校正雞咀温度位移" "desc": "開始校正雞咀温度位移"
}, },
"SettingsReset": { "SettingsReset": {
"text2": "全部重設?", "text2": "全部重設?",
@@ -146,7 +146,7 @@
}, },
"PowerLimit": { "PowerLimit": {
"text2": "功率限制", "text2": "功率限制",
"desc": "限制雞可用嘅最大功率 <W=watt>" "desc": "限制雞可用嘅最大功率 <W=watt>"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": "反轉加減掣", "text2": "反轉加減掣",

View File

@@ -4,27 +4,27 @@
"fonts": ["ascii_basic", "cjk"], "fonts": ["ascii_basic", "cjk"],
"tempUnitFahrenheit": true, "tempUnitFahrenheit": true,
"messages": { "messages": {
"SettingsCalibrationWarning": "开始温度校正前,请先确定铁头正处于室温!", "SettingsCalibrationWarning": "开始温度校正前,请先确定铁头正处于室温!",
"SettingsResetWarning": "你是否确定要将全部设重置为默认值?", "SettingsResetWarning": "你是否确定要将全部设重置为默认值?",
"UVLOWarningString": "电压过低", "UVLOWarningString": "电压过低",
"UndervoltageString": "Undervoltage", "UndervoltageString": "Undervoltage",
"InputVoltageString": "Input V: ", "InputVoltageString": "VIN: ",
"SleepingSimpleString": "Zzzz", "SleepingSimpleString": "Zzzz",
"SleepingAdvancedString": "Sleeping...", "SleepingAdvancedString": "Zzzz...",
"SleepingTipAdvancedString": "Tip:", "SleepingTipAdvancedString": "--->",
"IdleTipString": "Tip:", "IdleTipString": "--->",
"IdleSetString": " Set:", "IdleSetString": " /",
"TipDisconnectedString": "NO TIP", "TipDisconnectedString": "<-X-",
"SolderingAdvancedPowerPrompt": "Power: ", "SolderingAdvancedPowerPrompt": "Power: ",
"OffString": "关" "OffString": "关"
}, },
"messagesWarn": { "messagesWarn": {
"ResetOKMessage": "已重置!", "ResetOKMessage": "已重置!",
"SettingsResetMessage": "设已被重置!", "SettingsResetMessage": "设已被重置!",
"NoAccelerometerMessage": ["No accelerometer", "detected!"], "NoAccelerometerMessage": "未检测到加速度计",
"NoPowerDeliveryMessage": ["No USB-PD IC", "detected!"], "NoPowerDeliveryMessage": "未检测到PD电路",
"LockingKeysString": "已锁定", "LockingKeysString": "已锁定",
"UnlockingKeysString": "已解除锁定", "UnlockingKeysString": "已解",
"WarningKeysLockedString": "!按键锁定!", "WarningKeysLockedString": "!按键锁定!",
"WarningThermalRunaway": "加热失控" "WarningThermalRunaway": "加热失控"
}, },
@@ -63,78 +63,78 @@
"desc": "自动待机省电设置" "desc": "自动待机省电设置"
}, },
"UIMenu": { "UIMenu": {
"text2": "使用者介面", "text2": "用户界面",
"desc": "使用者介面设置" "desc": "用户界面设置"
}, },
"AdvancedMenu": { "AdvancedMenu": {
"text2": "进阶设置", "text2": "高级设置",
"desc": "进阶设置" "desc": "高级设置"
} }
}, },
"menuOptions": { "menuOptions": {
"DCInCutoff": { "DCInCutoff": {
"text2": "电源", "text2": "下限电压",
"desc": "输入电源;设置自动停机电压 <DC 10V> <S 锂电池,以每颗3.3V计算;此设置会禁用功率限制>" "desc": "设置自动停机电压 <DC=10V | S=(串)每节锂电池3.3V;此设置会禁用功率限制>"
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": "待机温度", "text2": "待机温度",
"desc": "待机模式时的铁头温度" "desc": "待机模式时的铁头温度"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": "待机时", "text2": "待机时",
"desc": "自动进入待机模式前的闲置等候时间 <S=秒 | M=分钟>" "desc": "自动进入待机模式前的等候时间 <S=秒 | M=分钟>"
}, },
"ShutdownTimeout": { "ShutdownTimeout": {
"text2": "自动关机", "text2": "自动关机",
"desc": "自动关机前的闲置等候时间 <M=分钟>" "desc": "自动关机前的等候时间 <M=分钟>"
}, },
"MotionSensitivity": { "MotionSensitivity": {
"text2": "动作灵敏度", "text2": "动作灵敏度",
"desc": "0=禁用 | 1=最低灵敏度 | ... | 9=最高灵敏度" "desc": "0=禁用 | 1=最低灵敏度 | ... | 9=最高灵敏度"
}, },
"TemperatureUnit": { "TemperatureUnit": {
"text2": "温", "text2": "温度单位",
"desc": "C=摄氏 | F=华氏" "desc": "C=摄氏 | F=华氏"
}, },
"AdvancedIdle": { "AdvancedIdle": {
"text2": "详细闲置画面", "text2": "闲置画面详情",
"desc": "闲置画面以英语小字显示详细信息" "desc": "闲置画面以英语小字显示详"
}, },
"DisplayRotation": { "DisplayRotation": {
"text2": "画面方向", "text2": "显示方向",
"desc": "右=使用右手 | 左=使用左手 | 自=自动" "desc": "右=右手 | 左=左手 | 自=自动"
}, },
"BoostTemperature": { "BoostTemperature": {
"text2": "增热温度", "text2": "增热温度",
"desc": "增热模式时使用的温度" "desc": "增热模式时使用的温度"
}, },
"AutoStart": { "AutoStart": {
"text2": "自动启", "text2": "自动启",
"desc": "开机时自动启 <无=禁用 | 焊=焊接模式 | 待=待机模式 | 室=室温待机>" "desc": "开机时自动启 <无=禁用 | 焊=焊接模式 | 待=待机模式 | 室=室温待机>"
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": "降温时闪", "text2": "降温时闪",
"desc": "停止加热之后,当铬铁头仍处于高温时闪烁画面" "desc": "停止加热之后,闪动温度显示提醒烙铁头仍处于高温状态"
}, },
"TemperatureCalibration": { "TemperatureCalibration": {
"text2": "温度校正?", "text2": "温度校正?",
"desc": "开始校正铁头温度移" "desc": "开始校正铁头温度移"
}, },
"SettingsReset": { "SettingsReset": {
"text2": "全部重置?", "text2": "全部重置?",
"desc": "将所有设重置为默认值" "desc": "将所有设重置为默认值"
}, },
"VoltageCalibration": { "VoltageCalibration": {
"text2": "输入电压校正?", "text2": "输入电压校正?",
"desc": "开始校正VIN输入电压 <长按以退出>" "desc": "开始校正输入电压VIN<长按以退出>"
}, },
"AdvancedSoldering": { "AdvancedSoldering": {
"text2": "详细焊接画面", "text2": "焊接画面详情",
"desc": "焊接模式画面以英语小字显示详细信息" "desc": "焊接模式画面以英语小字显示详"
}, },
"ScrollingSpeed": { "ScrollingSpeed": {
"text2": "动速度", "text2": "动速度",
"desc": "解说文字的动速度" "desc": "解说文字的动速度"
}, },
"QCMaxVoltage": { "QCMaxVoltage": {
"text2": "QC电压", "text2": "QC电压",
@@ -142,55 +142,55 @@
}, },
"PDNegTimeout": { "PDNegTimeout": {
"text2": "PD超时", "text2": "PD超时",
"desc": "设定USB PD协议交涉的超时时限为兼容某些QC电源而设 <x100ms亳秒>" "desc": "设定USB-PD协议交涉的超时时限为兼容某些QC电源而设 <x100ms亳秒>"
}, },
"PowerLimit": { "PowerLimit": {
"text2": "功率限制", "text2": "功率限制",
"desc": "限制铁可用的最大功率 <W=watt瓦特>" "desc": "限制铁可用的最大功率 <W=瓦特>"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": "调换加减键", "text2": "调换加减键",
"desc": "调校温度时换加减键的方向" "desc": "调校温度时换加减键的方向"
}, },
"TempChangeShortStep": { "TempChangeShortStep": {
"text2": "温度调整", "text2": "短按温度调整",
"desc": "调校温度时短按一下的温度变幅" "desc": "调校温度时短按按键的温度变幅"
}, },
"TempChangeLongStep": { "TempChangeLongStep": {
"text2": "温度调整", "text2": "长按温度调整",
"desc": "调校温度时长按按键的温度变幅" "desc": "调校温度时长按按键的温度变幅"
}, },
"PowerPulsePower": { "PowerPulsePower": {
"text2": "电源脉冲", "text2": "电源脉冲",
"desc": "为保持电源唤醒而通电所用的功率 <watt瓦特>" "desc": "为保持电源处于唤醒状态所用的功率 <Watt瓦特>"
}, },
"HallEffSensitivity": { "HallEffSensitivity": {
"text2": "磁场灵敏度", "text2": "磁场灵敏度",
"desc": "磁场感应器用作启动待机模式的灵敏度 <关=禁用 | 低=低灵敏度 | 中=中灵敏度 | 高=高灵敏度>" "desc": "霍尔效应传感器用作启动待机模式的灵敏度 <关=禁用 | 低=低灵敏度 | 中=中灵敏度 | 高=高灵敏度>"
}, },
"LockingMode": { "LockingMode": {
"text2": "按键锁定", "text2": "按键锁定",
"desc": "焊接模式时,同时长按两个按键启用按键锁定 <无=禁用 | 增=只容许增热模式 | 全=锁定全部>" "desc": "焊接模式时,同时长按两个按键启用按键锁定 <无=禁用 | 增=只容许增热模式 | 全=完全锁定>"
}, },
"MinVolCell": { "MinVolCell": {
"text2": "最低电压", "text2": "最低电压",
"desc": "每电池的最低可用电压 <伏特> <3S: 3.0V - 3.7V, 4/5/6S: 2.4V - 3.7V>" "desc": "每电池的最低允许电压 <V伏特> <3S: 3.0V - 3.7V, 4/5/6S: 2.4V - 3.7V>"
}, },
"AnimLoop": { "AnimLoop": {
"text2": "动画循环", "text2": "动画循环",
"desc": "循环显示功能表图示动画" "desc": "主菜单中循环播放功能图标动画"
}, },
"AnimSpeed": { "AnimSpeed": {
"text2": "动画速度", "text2": "动画速度",
"desc": "功能表图示动画的速度 <关=不显示动画 | 慢=慢速 | 中=中速 | 快=快速>" "desc": "主菜单中功能图标动画的播放速度 <关=不显示动画 | 慢=慢速 | 中=中速 | 快=快速>"
}, },
"PowerPulseWait": { "PowerPulseWait": {
"text2": "电源脉冲间隔", "text2": "电源脉冲间隔",
"desc": "为保持电源唤醒,每次通电之间的间隔时间 <x2.5s(秒)>" "desc": "为保持电源处于唤醒状态,每次通电之间的间隔时间 <x2.5s(秒)>"
}, },
"PowerPulseDuration": { "PowerPulseDuration": {
"text2": "电源脉冲时长", "text2": "电源脉冲时长",
"desc": "为保持电源唤醒,每次通电脉冲的时间长度 <x250ms亳秒>" "desc": "为保持电源处于唤醒状态,每次通电脉冲的时间长度 <x250ms亳秒>"
}, },
"LanguageSwitch": { "LanguageSwitch": {
"text2": "语言:简体中文", "text2": "语言:简体中文",
@@ -198,11 +198,11 @@
}, },
"Brightness": { "Brightness": {
"text2": "屏幕亮度", "text2": "屏幕亮度",
"desc": "设定OLED屏幕的亮度" "desc": "调整OLED屏幕的亮度"
}, },
"ColourInversion": { "ColourInversion": {
"text2": "螢幕反轉色", "text2": "反转屏幕颜色",
"desc": "反转OLED屏幕的黑白色彩" "desc": "反转OLED黑/白屏幕"
} }
} }
} }

View File

@@ -4,7 +4,7 @@
"fonts": ["ascii_basic", "cjk"], "fonts": ["ascii_basic", "cjk"],
"tempUnitFahrenheit": true, "tempUnitFahrenheit": true,
"messages": { "messages": {
"SettingsCalibrationWarning": "開始溫度校正前,請先確定鐵頭正處於室溫!", "SettingsCalibrationWarning": "開始溫度校正前,請先確定鐵頭正處於室溫!",
"SettingsResetWarning": "你是否確定要將全部設定重設到預設值?", "SettingsResetWarning": "你是否確定要將全部設定重設到預設值?",
"UVLOWarningString": "電壓過低", "UVLOWarningString": "電壓過低",
"UndervoltageString": "Undervoltage", "UndervoltageString": "Undervoltage",
@@ -21,8 +21,8 @@
"messagesWarn": { "messagesWarn": {
"ResetOKMessage": "已重設!", "ResetOKMessage": "已重設!",
"SettingsResetMessage": "設定已被重設!", "SettingsResetMessage": "設定已被重設!",
"NoAccelerometerMessage": ["No accelerometer", "detected!"], "NoAccelerometerMessage": "未能偵測加速度計",
"NoPowerDeliveryMessage": ["No USB-PD IC", "detected!"], "NoPowerDeliveryMessage": "未能偵測PD晶片",
"LockingKeysString": "已鎖定", "LockingKeysString": "已鎖定",
"UnlockingKeysString": "已解除鎖定", "UnlockingKeysString": "已解除鎖定",
"WarningKeysLockedString": "!按鍵鎖定!", "WarningKeysLockedString": "!按鍵鎖定!",
@@ -78,7 +78,7 @@
}, },
"SleepTemperature": { "SleepTemperature": {
"text2": "待機溫度", "text2": "待機溫度",
"desc": "於待機模式時的鐵頭溫度" "desc": "於待機模式時的鐵頭溫度"
}, },
"SleepTimeout": { "SleepTimeout": {
"text2": "待機延時", "text2": "待機延時",
@@ -114,11 +114,11 @@
}, },
"CooldownBlink": { "CooldownBlink": {
"text2": "降溫時閃爍", "text2": "降溫時閃爍",
"desc": "停止加熱之後,當鐵頭仍處於高溫時閃爍畫面" "desc": "停止加熱之後,當鐵頭仍處於高溫時閃爍畫面"
}, },
"TemperatureCalibration": { "TemperatureCalibration": {
"text2": "溫度校正?", "text2": "溫度校正?",
"desc": "開始校正鐵頭溫度位移" "desc": "開始校正鐵頭溫度位移"
}, },
"SettingsReset": { "SettingsReset": {
"text2": "全部重設?", "text2": "全部重設?",
@@ -146,7 +146,7 @@
}, },
"PowerLimit": { "PowerLimit": {
"text2": "功率限制", "text2": "功率限制",
"desc": "限制鐵可用的最大功率 <W=watt瓦特>" "desc": "限制鐵可用的最大功率 <W=watt瓦特>"
}, },
"ReverseButtonTempChange": { "ReverseButtonTempChange": {
"text2": "調換加減鍵", "text2": "調換加減鍵",

View File

@@ -1,4 +1,3 @@
ifndef model ifndef model
model:=TS100 model:=TS100
endif endif
@@ -11,18 +10,30 @@ ifneq ($(model),$(filter $(model),$(ALL_MODELS)))
$(error Invalid model '$(model)', valid options are: $(ALL_MODELS)) $(error Invalid model '$(model)', valid options are: $(ALL_MODELS))
endif endif
# output folder
HEXFILE_DIR=Hexfile
# temporary objects folder
OUTPUT_DIR_BASE=Objects
OUTPUT_DIR=Objects/$(model)
ALL_LANGUAGES=BG CS DA DE EN ES FI FR HR HU IT JA_JP LT NL NL_BE NO PL PT RU SK SL SR_CYRL SR_LATN SV TR UK YUE_HK ZH_CN ZH_TW ALL_LANGUAGES=BG CS DA DE EN ES FI FR HR HU IT JA_JP LT NL NL_BE NO PL PT RU SK SL SR_CYRL SR_LATN SV TR UK YUE_HK ZH_CN ZH_TW
LANGUAGE_GROUP_CJK_LANGS=EN JA_JP YUE_HK ZH_TW ZH_CN LANGUAGE_GROUP_CJK_LANGS=EN JA_JP YUE_HK ZH_TW ZH_CN
LANGUAGE_GROUP_CJK_NAME=Chinese+Japanese LANGUAGE_GROUP_CJK_NAME=Chinese+Japanese
ifdef custom_multi_langs
RUN_SHELL_CMD := $(shell rm -Rf {Core/Gen,$(OUTPUT_DIR)/Core/Gen,$(HEXFILE_DIR)/*_Custom.*})
LANGUAGE_GROUP_CUSTOM_LANGS=$(custom_multi_langs)
LANGUAGE_GROUP_CUSTOM_NAME=Custom
endif
LANGUAGE_GROUP_CYRILLIC_LANGS=EN BG RU SR_CYRL SR_LATN UK LANGUAGE_GROUP_CYRILLIC_LANGS=EN BG RU SR_CYRL SR_LATN UK
LANGUAGE_GROUP_CYRILLIC_NAME=Bulgarian+Russian+Serbian+Ukrainian LANGUAGE_GROUP_CYRILLIC_NAME=Bulgarian+Russian+Serbian+Ukrainian
LANGUAGE_GROUP_EUR_LANGS=EN $(filter-out $(LANGUAGE_GROUP_CJK_LANGS) $(LANGUAGE_GROUP_CYRILLIC_LANGS),$(ALL_LANGUAGES)) LANGUAGE_GROUP_EUR_LANGS=EN $(filter-out $(LANGUAGE_GROUP_CJK_LANGS) $(LANGUAGE_GROUP_CYRILLIC_LANGS),$(ALL_LANGUAGES))
LANGUAGE_GROUP_EUR_NAME=European LANGUAGE_GROUP_EUR_NAME=European
LANGUAGE_GROUPS=CJK CYRILLIC EUR LANGUAGE_GROUPS=CUSTOM CJK CYRILLIC EUR
# Defines for host tools # Defines for host tools
@@ -184,12 +195,7 @@ $(shell find $(SOURCE_CORE_DIR) -type f -name '*.cpp') \
$(shell find $(SOURCE_DRIVERS_DIR) -path $(PD_DRIVER_TESTS_DIR) -prune -false -o -type f -name '*.cpp') \ $(shell find $(SOURCE_DRIVERS_DIR) -path $(PD_DRIVER_TESTS_DIR) -prune -false -o -type f -name '*.cpp') \
$(shell find $(DEVICE_BSP_DIR) -type f -name '*.cpp') \ $(shell find $(DEVICE_BSP_DIR) -type f -name '*.cpp') \
$(shell find $(SOURCE_MIDDLEWARES_DIR) -type f -name '*.cpp') $(shell find $(SOURCE_MIDDLEWARES_DIR) -type f -name '*.cpp')
# output folder
HEXFILE_DIR=Hexfile
# temporary objects folder
OUTPUT_DIR_BASE=Objects
OUTPUT_DIR=Objects/$(model)
# code optimisation ------------------------------------------------------------ # code optimisation ------------------------------------------------------------
OPTIM=-Os -flto -finline-small-functions -findirect-inlining -fdiagnostics-color -ffunction-sections -fdata-sections -fshort-enums OPTIM=-Os -flto -finline-small-functions -findirect-inlining -fdiagnostics-color -ffunction-sections -fdata-sections -fshort-enums