feat: 全量同步 254 个常用的 Arduino 扩展库文件

This commit is contained in:
yczpf2019
2026-01-24 16:05:38 +08:00
parent c665ba662b
commit 397b9a23a3
6878 changed files with 2732224 additions and 1 deletions

View File

@@ -0,0 +1,97 @@
# Internationalisation (I18N) & Locale Files
This directory contains the files used by the library to store the text it uses. If you want to add support for a language, this is the
correct place. If you are adding text strings to a routine, you should use the ones here.
## Changing the language/locale used by the library.
There are several ways to change which locale file is used by the library. Use which ever one suits your needs best.
To keep the space used by the library to a minimum, all methods require the change to happen at compile time.
There is _no_ runtime option to change locales.
### Change `_IR_LOCALE_` in the `src/IRremoteESP8266.h` file.
In the [IRremoteESP8266.h](../IRremoteESP8266.h#L57-L59) file, find and locate the lines that look like:
```c++
#ifndef _IR_LOCALE_
#define _IR_LOCALE_ en-AU
#endif // _IR_LOCALE_
```
Change `en-AU` to the language & country that best suits your needs. e.g. `de-DE` for Germany/German.
### Use a compile-time build flag.
Use the compiler flag: `-D_IR_LOCALE_=en-AU` when compiling the library. Especially when compiling the `IRtext.cpp` file.
Change `en-AU` to a value which matches one of the file names in this directory. e.g. `de-DE` for Germany/German, which will use
the `de_DE.h` file.
### Use the appropriate pre-prepared build environment. _(PlatformIO only)_
If you examine the `platformio.ini` file located in the same directory as the example code you may find pre-setup compile environments
for the different supported locales.
Choose the appropriate one for you language by asking PlatformIO to build or upload using that environment.
e.g. See `IRrecvDumpV2`'s [platformio.ini](../../examples/IRrecvDumpV2/platformio.ini)
### Use a custom `build_flags`. _(PlatformIO only)_
Edit the `platformio.ini` file in the directory containing your example/source code.
Either in the default PlatformIO environment (`[env]`), or in which ever PlatformIO environment you using,
change or add the following line:
```
build_flags = -D_IR_LOCALE_=en-AU ; Or use which ever locale variable you want.
```
Every time you change that line, you should do a `pio clean` or choose the `clean` option from the build menu, to ensure a fresh copy
of `IRtext.o` is created.
## Adding support for a new locale/language.
Only [ASCII](https://en.wikipedia.org/wiki/ASCII#8-bit_codes)/[UTF-8](https://en.wikipedia.org/wiki/UTF-8) 8-bit characters are supported.
[Unicode](https://en.wikipedia.org/wiki/Unicode) is **not** supported. Unicode may work. It may not. It's just not supported.
i.e. If Arduino's `Serial.print()` can handle it, it will probably work.
### Copy/create a new locale file in this directory.
Copy [en-AU.h](en-AU.h) or which every is a closer fit for your language to `xx-YY.h` where `xx` is the [ISO code](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes) for the language.
e.g. `en` is English. `de` is German etc. and `YY` is the ISO country code. e.g. `AU` is Australia.
Modify the comments and all `LOCALE_EN_AU_H_`s in the file to `LOCALE_XX_YY_H_` for your locale.
### Override any `#‍define` values that reside in `defaults.h`
Go through the [defaults.h](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/locale/defaults.h) file, and find any `#‍define` lines that define a macro starting with `D_` that has text
that needs to change for your locale.
Copy or create a corresponding `#‍define D_STR_HELLOWORLD "Hello World"` in your `xx-YY.h` file, and translate the text appropriately
e.g. `#‍define D_STR_HELLOWORLD "Bonjour le monde"` (French)
Any values you `#‍define` in `xx-YY.h` will override the corresponding value in the [defaults.h](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/locale/defaults.h) file.
### Supporting a dialect/regional variant of another _existing_ language/locale.
Similar to the previous step, if you only need to modify a small subset of the strings used in another locale file, then include the
other locale file and then make sure to `#‍undef` any strings that need to be (re-)changed.
See the [Swiss-German](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/locale/de-CH.h) for an example of how to do this. i.e. It `#‍include "locale/de-DE.h"`s the German locale, and
redefines any strings that are not standard [German](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/locale/de-DE.h).
## Adding new text strings to the library.
If you need to add an entirely new string to the library to support some feature etc. e.g. _"Widget"_.
You should first understand how the library tries to do this such that it is easy to support different languages for it.
1. Use a constant named `kWidgetStr` in the appropriate statement in the `.cpp` file.
2. Edit [IRtext.cpp](IRtext.cpp), and add the appropriate line for your new constant. e.g.
```c++
String kWidgetStr = D_STR_WIDGET;
```
The `kWidgetStr` variable will house the sole copy of the string for the entire library. This limits any duplication.
The `D_STR_WIDGET` macro will be what is targeted by the different language / locales files.
3. Edit [locale/defaults.h](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/locale/defaults.h), and add the appropriate stanza for your new string. e.g.
```c++
#ifndef D_STR_WIDGET
#define D_STR_WIDGET "Turbo"
#endif // D_STR_WIDGET
```
4. _(Manual)_ Update [IRtext.h](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/IRtext.h), and add the appropriate line for your new constant. e.g.
```c++
extern const String kWidgetStr;
```
For any file that `#&zwj;include <IRtext.h>`s this file, it will tell it that the string is stored elsewhere,
and to look for it elsewhere at the object linking stage of the build. This is what makes the string be referenced from a central location.
4. _(Automatic)_ Run `tools/generate_irtext_h.sh` to update [IRtext.h](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/IRtext.h).
In the [src/locale](https://github.com/crankyoldgit/IRremoteESP8266/blob/master/src/locale/) directory. Run the `../../tools/generate_irtext_h.sh` command. It will update the file for you automatically.

View File

@@ -0,0 +1,158 @@
// Copyright 2019 - Martin (@finfinack)
// Locale/language file for German / Switzerland.
// This file will override the default values located in `defaults.h`.
#ifndef LOCALE_DE_CH_H_
#define LOCALE_DE_CH_H_
// Import German / Germany as default overrides.
#include "locale/de-DE.h"
// As we have loaded another language, we need to #undef anything we need
// to update/change.
#undef D_STR_ON
#define D_STR_ON "Ii"
#undef D_STR_OFF
#define D_STR_OFF "Us"
#undef D_STR_TOGGLE
#define D_STR_TOGGLE "Umschalte"
#undef D_STR_SLEEP
#define D_STR_SLEEP "Schlafe"
#undef D_STR_LIGHT
#define D_STR_LIGHT "Liecht"
#undef D_STR_POWERFUL
#define D_STR_POWERFUL "Starch"
#undef D_STR_QUIET
#define D_STR_QUIET "Liislig"
#undef D_STR_CLEAN
#define D_STR_CLEAN "Reinige"
#undef D_STR_PURIFY
#define D_STR_PURIFY "Frische"
#undef D_STR_HEALTH
#define D_STR_HEALTH "Gsundheit"
#undef D_STR_HUMID
#define D_STR_HUMID "Füecht"
#undef D_STR_SAVE
#define D_STR_SAVE "Speichere"
#undef D_STR_EYE
#define D_STR_EYE "Aug"
#undef D_STR_FOLLOW
#define D_STR_FOLLOW "Folge"
#undef D_STR_HOLD
#define D_STR_HOLD "Halte"
#undef D_STR_BUTTON
#define D_STR_BUTTON "Chnopf"
#undef D_STR_UP
#define D_STR_UP "Ufe"
#undef D_STR_TEMPUP
#define D_STR_TEMPUP D_STR_TEMP " " D_STR_UP
#undef D_STR_DOWN
#define D_STR_DOWN "Abe"
#undef D_STR_TEMPDOWN
#define D_STR_TEMPDOWN D_STR_TEMP " " D_STR_DOWN
#undef D_STR_CHANGE
#define D_STR_CHANGE "Wechsele"
#undef D_STR_MOVE
#define D_STR_MOVE "Verschiebe"
#undef D_STR_SET
#define D_STR_SET "Setze"
#undef D_STR_CANCEL
#define D_STR_CANCEL "Abbreche"
#undef D_STR_WEEKLY
#define D_STR_WEEKLY "Wüchentlich"
#undef D_STR_WEEKLYTIMER
#define D_STR_WEEKLYTIMER D_STR_WEEKLY " " D_STR_TIMER
#undef D_STR_OUTSIDE
#define D_STR_OUTSIDE "Dusse"
#undef D_STR_LOUD
#define D_STR_LOUD "Luut"
#undef D_STR_UPPER
#define D_STR_UPPER "Obe"
#undef D_STR_LOWER
#define D_STR_LOWER "Une"
#undef D_STR_CIRCULATE
#define D_STR_CIRCULATE "Zirkuliere"
#undef D_STR_CEILING
#define D_STR_CEILING "Decki"
#undef D_STR_6THSENSE
#define D_STR_6THSENSE "6te Sinn"
#undef D_STR_COOL
#define D_STR_COOL "Chüehle"
#undef D_STR_HEAT
#define D_STR_HEAT "Heize"
#undef D_STR_DRY
#define D_STR_DRY "Tröchne"
#undef D_STR_MED
#define D_STR_MED "Mit"
#undef D_STR_MEDIUM
#define D_STR_MEDIUM "Mittel"
#undef D_STR_HIGHEST
#define D_STR_HIGHEST "Höchscht"
#undef D_STR_HIGH
#define D_STR_HIGH "Höch"
#undef D_STR_HI
#define D_STR_HI "H"
#undef D_STR_MID
#define D_STR_MID "M"
#undef D_STR_MIDDLE
#define D_STR_MIDDLE "Mittel"
#undef D_STR_LOW
#define D_STR_LOW "Tüüf"
#undef D_STR_LO
#define D_STR_LO "T"
#undef D_STR_LOWEST
#define D_STR_LOWEST "Tüfschte"
#undef D_STR_MAXRIGHT
#define D_STR_MAXRIGHT D_STR_MAX " " D_STR_RIGHT
#undef D_STR_RIGHTMAX_NOSPACE
#define D_STR_RIGHTMAX_NOSPACE D_STR_RIGHT D_STR_MAX
#undef D_STR_MAXLEFT
#define D_STR_MAXLEFT D_STR_MAX " " D_STR_LEFT
#undef D_STR_LEFTMAX_NOSPACE
#define D_STR_LEFTMAX_NOSPACE D_STR_LEFT D_STR_MAX
#undef D_STR_CENTRE
#define D_STR_CENTRE "Mitti"
#undef D_STR_TOP
#define D_STR_TOP "Obe"
#undef D_STR_BOTTOM
#define D_STR_BOTTOM "Une"
#undef D_STR_DAY
#define D_STR_DAY "Tag"
#undef D_STR_DAYS
#define D_STR_DAYS "Täg"
#undef D_STR_HOUR
#define D_STR_HOUR "Stund"
#undef D_STR_HOURS
#define D_STR_HOURS D_STR_HOUR "e"
#undef D_STR_MINUTE
#define D_STR_MINUTE "Minute"
#undef D_STR_MINUTES
#define D_STR_MINUTES D_STR_MINUTE
#undef D_STR_SECONDS
#define D_STR_SECONDS D_STR_SECOND
#undef D_STR_NOW
#define D_STR_NOW "Jetz"
#undef D_STR_NO
#define D_STR_NO "Nei"
#undef D_STR_REPEAT
#define D_STR_REPEAT "Wiederhole"
// IRrecvDumpV2+
#undef D_STR_TIMESTAMP
#define D_STR_TIMESTAMP "Ziitstämpfel"
#undef D_STR_IRRECVDUMP_STARTUP
#define D_STR_IRRECVDUMP_STARTUP \
"IRrecvDump lauft und wartet uf IR Iigab ufem Pin %d"
#undef D_WARN_BUFFERFULL
#define D_WARN_BUFFERFULL \
"WARNUNG: IR Code isch zgross für de Buffer (>= %d). " \
"Dem Resultat sött mer nöd vertraue bevor das behobe isch. " \
"Bearbeite & vergrössere `kCaptureBufferSize`."
#endif // LOCALE_DE_CH_H_

View File

@@ -0,0 +1,126 @@
// Copyright 2019 - Martin (@finfinack)
// Locale/language file for German / Germany.
// This file will override the default values located in `defaults.h`.
#ifndef LOCALE_DE_DE_H_
#define LOCALE_DE_DE_H_
#define D_STR_UNKNOWN "UNBEKANNT"
#define D_STR_PROTOCOL "Protokoll"
#define D_STR_ON "Ein"
#define D_STR_OFF "Aus"
#define D_STR_MODE "Modus"
#define D_STR_TOGGLE "Umschalten"
#define D_STR_SLEEP "Schlafen"
#define D_STR_LIGHT "Licht"
#define D_STR_POWERFUL "Stark"
#define D_STR_QUIET "Ruhig"
#define D_STR_ECONO "Eco"
#define D_STR_BEEP "Piep"
#define D_STR_MOULD "Schimmel"
#define D_STR_CLEAN "Reinigen"
#define D_STR_PURIFY "Frischen"
#define D_STR_TIMER "Timer"
#define D_STR_ONTIMER D_STR_ON " " D_STR_TIMER
#define D_STR_OFFTIMER D_STR_OFF " " D_STR_TIMER
#define D_STR_CLOCK "Uhr"
#define D_STR_COMMAND "Befehl"
#define D_STR_HEALTH "Gesundheit"
#define D_STR_TEMP "Temp"
#define D_STR_HUMID "Feucht"
#define D_STR_SAVE "Speichern"
#define D_STR_EYE "Auge"
#define D_STR_FOLLOW "Folgen"
#define D_STR_FRESH "Frisch"
#define D_STR_HOLD "Halten"
#define D_STR_BUTTON "Knopf"
#define D_STR_NIGHT "Nacht"
#define D_STR_SILENT "Ruhig"
#define D_STR_UP "Hinauf"
#define D_STR_TEMPUP D_STR_TEMP " " D_STR_UP
#define D_STR_DOWN "Hinunter"
#define D_STR_TEMPDOWN D_STR_TEMP " " D_STR_DOWN
#define D_STR_CHANGE "Wechseln"
#define D_STR_MOVE "Verschieben"
#define D_STR_SET "Setzen"
#define D_STR_CANCEL "Abbrechen"
#define D_STR_COMFORT "Komfort"
#define D_STR_WEEKLY "Wöchentlich"
#define D_STR_WEEKLYTIMER D_STR_WEEKLY " " D_STR_TIMER
#define D_STR_FAST "Schnell"
#define D_STR_SLOW "Langsam"
#define D_STR_AIRFLOW "Luftzug"
#define D_STR_STEP "Schritt"
#define D_STR_NA "N/A"
#define D_STR_OUTSIDE "Draussen"
#define D_STR_LOUD "Laut"
#define D_STR_UPPER "Oben"
#define D_STR_LOWER "Unten"
#define D_STR_BREEZE "Brise"
#define D_STR_CIRCULATE "Zirkulieren"
#define D_STR_CEILING "Decke"
#define D_STR_WALL "Wand"
#define D_STR_ROOM "Raum"
#define D_STR_6THSENSE "6ter Sinn"
#define D_STR_FIXED "Fixiert"
#define D_STR_AUTOMATIC "Automatisch"
#define D_STR_MANUAL "Manuell"
#define D_STR_COOL "Kühlen"
#define D_STR_HEAT "Heizen"
#define D_STR_FAN "Lüfter"
#define D_STR_FANONLY "nur_lüfter"
#define D_STR_DRY "Trocken"
#define D_STR_MED "Mit"
#define D_STR_MEDIUM "Mittel"
#define D_STR_HIGHEST "Höchste"
#define D_STR_HIGH "Hoch"
#define D_STR_HI "H"
#define D_STR_MID "M"
#define D_STR_MIDDLE "Mittel"
#define D_STR_LOW "Tief"
#define D_STR_LO "T"
#define D_STR_LOWEST "Tiefste"
#define D_STR_RIGHT "Rechts"
#define D_STR_MAXRIGHT D_STR_MAX " " D_STR_RIGHT
#define D_STR_RIGHTMAX_NOSPACE D_STR_RIGHT D_STR_MAX
#define D_STR_LEFT "Links"
#define D_STR_MAXLEFT D_STR_MAX " " D_STR_LEFT
#define D_STR_LEFTMAX_NOSPACE D_STR_LEFT D_STR_MAX
#define D_STR_WIDE "Breit"
#define D_STR_CENTRE "Mitte"
#define D_STR_TOP "Oben"
#define D_STR_BOTTOM "Unten"
#define D_STR_DAY "Tag"
#define D_STR_DAYS D_STR_DAY "e"
#define D_STR_HOUR "Stunde"
#define D_STR_HOURS D_STR_HOUR "n"
#define D_STR_MINUTES D_STR_MINUTE "n"
#define D_STR_SECOND "Sekunde"
#define D_STR_SECONDS D_STR_SECOND "n"
#define D_STR_NOW "Jetzt"
// These don't translate well to German as typically only 2 letter
// abbreviations are used. Hence, this is an approximation.
#define D_STR_THREELETTERDAYS "SonMonDieMitDonFreSam"
#define D_STR_YES "Ja"
#define D_STR_NO "Nein"
#define D_STR_TRUE "Wahr"
#define D_STR_FALSE "Falsch"
#define D_STR_REPEAT "Wiederholen"
// IRrecvDumpV2+
#define D_STR_TIMESTAMP "Zeitstempel"
#define D_STR_LIBRARY "Bibliothek"
#define D_STR_MESGDESC "Nachr. Beschr."
#define D_STR_IRRECVDUMP_STARTUP \
"IRrecvDump läuft und wartet auf IR Eingabe auf Pin %d"
#define D_WARN_BUFFERFULL \
"WARNUNG: IR Code ist zu gross für Buffer (>= %d). " \
"Dem Resultat sollte nicht vertraut werden bevor das behoben ist. " \
"Bearbeite & vergrössere `kCaptureBufferSize`."
#endif // LOCALE_DE_DE_H_

View File

@@ -0,0 +1,758 @@
// Copyright 2019 - David Conran (@crankyoldgit)
// The default text to use throughout the library.
// The library will use this text if no locale (_IR_LOCALE_) is set or if
// the locale doesn't define particular values.
// If they are defined, this file should NOT override them.
//
// This file should contain a #define for every translateable/locale dependant
// string used by the library. Language specific files don't have to include
// everything.
//
// NOTE: ASCII/UTF-8 characters only. Unicode is NOT supported.
//
// The defaults are English (AU) / en-AU. Australia (AU) is pretty much the same
// as English (UK) for this libraries use case.
#ifndef LOCALE_DEFAULTS_H_
#define LOCALE_DEFAULTS_H_
#ifndef D_STR_UNKNOWN
#define D_STR_UNKNOWN "UNKNOWN"
#endif // D_STR_UNKNOWN
#ifndef D_STR_PROTOCOL
#define D_STR_PROTOCOL "Protocol"
#endif // D_STR_PROTOCOL
#ifndef D_STR_POWER
#define D_STR_POWER "Power"
#endif // D_STR_POWER
#ifndef D_STR_PREVIOUS
#define D_STR_PREVIOUS "Previous"
#endif // D_STR_PREVIOUS
#ifndef D_STR_ON
#define D_STR_ON "On"
#endif // D_STR_ON
#ifndef D_STR_OFF
#define D_STR_OFF "Off"
#endif // D_STR_OFF
#ifndef D_STR_MODE
#define D_STR_MODE "Mode"
#endif // D_STR_MODE
#ifndef D_STR_TOGGLE
#define D_STR_TOGGLE "Toggle"
#endif // D_STR_TOGGLE
#ifndef D_STR_TURBO
#define D_STR_TURBO "Turbo"
#endif // D_STR_TURBO
#ifndef D_STR_SUPER
#define D_STR_SUPER "Super"
#endif // D_STR_SUPER
#ifndef D_STR_SLEEP
#define D_STR_SLEEP "Sleep"
#endif // D_STR_SLEEP
#ifndef D_STR_LIGHT
#define D_STR_LIGHT "Light"
#endif // D_STR_LIGHT
#ifndef D_STR_POWERFUL
#define D_STR_POWERFUL "Powerful"
#endif // D_STR_POWERFUL
#ifndef D_STR_QUIET
#define D_STR_QUIET "Quiet"
#endif // D_STR_QUIET
#ifndef D_STR_ECONO
#define D_STR_ECONO "Econo"
#endif // D_STR_ECONO
#ifndef D_STR_SWING
#define D_STR_SWING "Swing"
#endif // D_STR_SWING
#ifndef D_STR_SWINGH
#define D_STR_SWINGH D_STR_SWING"(H)" // Set `D_STR_SWING` first!
#endif // D_STR_SWINGH
#ifndef D_STR_SWINGV
#define D_STR_SWINGV D_STR_SWING"(V)" // Set `D_STR_SWING` first!
#endif // D_STR_SWINGV
#ifndef D_STR_BEEP
#define D_STR_BEEP "Beep"
#endif // D_STR_BEEP
#ifndef D_STR_MOULD
#define D_STR_MOULD "Mould"
#endif // D_STR_MOULD
#ifndef D_STR_CLEAN
#define D_STR_CLEAN "Clean"
#endif // D_STR_CLEAN
#ifndef D_STR_PURIFY
#define D_STR_PURIFY "Purify"
#endif // D_STR_PURIFY
#ifndef D_STR_TIMER
#define D_STR_TIMER "Timer"
#endif // D_STR_TIMER
#ifndef D_STR_ONTIMER
#define D_STR_ONTIMER D_STR_ON " " D_STR_TIMER // Set `D_STR_ON` first!
#endif // D_STR_ONTIMER
#ifndef D_STR_OFFTIMER
#define D_STR_OFFTIMER D_STR_OFF " " D_STR_TIMER // Set `D_STR_OFF` first!
#endif // D_STR_OFFTIMER
#ifndef D_STR_CLOCK
#define D_STR_CLOCK "Clock"
#endif // D_STR_CLOCK
#ifndef D_STR_COMMAND
#define D_STR_COMMAND "Command"
#endif // D_STR_COMMAND
#ifndef D_STR_XFAN
#define D_STR_XFAN "XFan"
#endif // D_STR_XFAN
#ifndef D_STR_HEALTH
#define D_STR_HEALTH "Health"
#endif // D_STR_HEALTH
#ifndef D_STR_MODEL
#define D_STR_MODEL "Model"
#endif // D_STR_MODEL
#ifndef D_STR_TEMP
#define D_STR_TEMP "Temp"
#endif // D_STR_TEMP
#ifndef D_STR_IFEEL
#define D_STR_IFEEL "IFeel"
#endif // D_STR_IFEEL
#ifndef D_STR_HUMID
#define D_STR_HUMID "Humid"
#endif // D_STR_HUMID
#ifndef D_STR_SAVE
#define D_STR_SAVE "Save"
#endif // D_STR_SAVE
#ifndef D_STR_EYE
#define D_STR_EYE "Eye"
#endif // D_STR_EYE
#ifndef D_STR_FOLLOW
#define D_STR_FOLLOW "Follow"
#endif // D_STR_FOLLOW
#ifndef D_STR_ION
#define D_STR_ION "Ion"
#endif // D_STR_ION
#ifndef D_STR_FRESH
#define D_STR_FRESH "Fresh"
#endif // D_STR_FRESH
#ifndef D_STR_HOLD
#define D_STR_HOLD "Hold"
#endif // D_STR_HOLD
#ifndef D_STR_8C_HEAT
#define D_STR_8C_HEAT "8C " D_STR_HEAT // Set `D_STR_HEAT` first!
#endif // D_STR_8C_HEAT
#ifndef D_STR_BUTTON
#define D_STR_BUTTON "Button"
#endif // D_STR_BUTTON
#ifndef D_STR_NIGHT
#define D_STR_NIGHT "Night"
#endif // D_STR_NIGHT
#ifndef D_STR_SILENT
#define D_STR_SILENT "Silent"
#endif // D_STR_SILENT
#ifndef D_STR_FILTER
#define D_STR_FILTER "Filter"
#endif // D_STR_FILTER
#ifndef D_STR_3D
#define D_STR_3D "3D"
#endif // D_STR_3D
#ifndef D_STR_CELSIUS
#define D_STR_CELSIUS "Celsius"
#endif // D_STR_CELSIUS
#ifndef D_STR_UP
#define D_STR_UP "Up"
#endif // D_STR_UP
#ifndef D_STR_TEMPUP
#define D_STR_TEMPUP D_STR_TEMP " " D_STR_UP // Set `D_STR_TEMP` first!
#endif // D_STR_TEMPUP
#ifndef D_STR_DOWN
#define D_STR_DOWN "Down"
#endif // D_STR_DOWN
#ifndef D_STR_TEMPDOWN
#define D_STR_TEMPDOWN D_STR_TEMP " " D_STR_DOWN // Set `D_STR_TEMP` first!
#endif // D_STR_TEMPDOWN
#ifndef D_STR_CHANGE
#define D_STR_CHANGE "Change"
#endif // D_STR_CHANGE
#ifndef D_STR_START
#define D_STR_START "Start"
#endif // D_STR_START
#ifndef D_STR_STOP
#define D_STR_STOP "Stop"
#endif // D_STR_STOP
#ifndef D_STR_MOVE
#define D_STR_MOVE "Move"
#endif // D_STR_MOVE
#ifndef D_STR_SET
#define D_STR_SET "Set"
#endif // D_STR_SET
#ifndef D_STR_CANCEL
#define D_STR_CANCEL "Cancel"
#endif // D_STR_CANCEL
#ifndef D_STR_COMFORT
#define D_STR_COMFORT "Comfort"
#endif // D_STR_COMFORT
#ifndef D_STR_SENSOR
#define D_STR_SENSOR "Sensor"
#endif // D_STR_SENSOR
#ifndef D_STR_DISPLAY
#define D_STR_DISPLAY "Display"
#endif // D_STR_DISPLAY
#ifndef D_STR_WEEKLY
#define D_STR_WEEKLY "Weekly"
#endif // D_STR_WEEKLY
#ifndef D_STR_WEEKLYTIMER
#define D_STR_WEEKLYTIMER D_STR_WEEKLY " " D_STR_TIMER // Needs `D_STR_WEEKLY`!
#endif // D_STR_WEEKLYTIMER
#ifndef D_STR_WIFI
#define D_STR_WIFI "WiFi"
#endif // D_STR_WIFI
#ifndef D_STR_LAST
#define D_STR_LAST "Last"
#endif // D_STR_LAST
#ifndef D_STR_FAST
#define D_STR_FAST "Fast"
#endif // D_STR_FAST
#ifndef D_STR_SLOW
#define D_STR_SLOW "Slow"
#endif // D_STR_SLOW
#ifndef D_STR_AIRFLOW
#define D_STR_AIRFLOW "Air Flow"
#endif // D_STR_AIRFLOW
#ifndef D_STR_STEP
#define D_STR_STEP "Step"
#endif // D_STR_STEP
#ifndef D_STR_NA
#define D_STR_NA "N/A"
#endif // D_STR_NA
#ifndef D_STR_INSIDE
#define D_STR_INSIDE "Inside"
#endif // D_STR_INSIDE
#ifndef D_STR_OUTSIDE
#define D_STR_OUTSIDE "Outside"
#endif // D_STR_OUTSIDE
#ifndef D_STR_LOUD
#define D_STR_LOUD "Loud"
#endif // D_STR_LOUD
#ifndef D_STR_UPPER
#define D_STR_UPPER "Upper"
#endif // D_STR_UPPER
#ifndef D_STR_LOWER
#define D_STR_LOWER "Lower"
#endif // D_STR_LOWER
#ifndef D_STR_BREEZE
#define D_STR_BREEZE "Breeze"
#endif // D_STR_BREEZE
#ifndef D_STR_CIRCULATE
#define D_STR_CIRCULATE "Circulate"
#endif // D_STR_CIRCULATE
#ifndef D_STR_CEILING
#define D_STR_CEILING "Ceiling"
#endif // D_STR_CEILING
#ifndef D_STR_WALL
#define D_STR_WALL "Wall"
#endif // D_STR_WALL
#ifndef D_STR_ROOM
#define D_STR_ROOM "Room"
#endif // D_STR_ROOM
#ifndef D_STR_6THSENSE
#define D_STR_6THSENSE "6th Sense"
#endif // D_STR_6THSENSE
#ifndef D_STR_ZONEFOLLOW
#define D_STR_ZONEFOLLOW "Zone Follow"
#endif // D_STR_ZONEFOLLOW
#ifndef D_STR_FIXED
#define D_STR_FIXED "Fixed"
#endif // D_STR_FIXED
#ifndef D_STR_AUTO
#define D_STR_AUTO "Auto"
#endif // D_STR_AUTO
#ifndef D_STR_AUTOMATIC
#define D_STR_AUTOMATIC "Automatic"
#endif // D_STR_AUTOMATIC
#ifndef D_STR_MANUAL
#define D_STR_MANUAL "Manual"
#endif // D_STR_MANUAL
#ifndef D_STR_COOL
#define D_STR_COOL "Cool"
#endif // D_STR_COOL
#ifndef D_STR_HEAT
#define D_STR_HEAT "Heat"
#endif // D_STR_HEAT
#ifndef D_STR_FAN
#define D_STR_FAN "Fan"
#endif // D_STR_FAN
#ifndef D_STR_FANONLY
#define D_STR_FANONLY "fan_only"
#endif // D_STR_FANONLY
#ifndef D_STR_DRY
#define D_STR_DRY "Dry"
#endif // D_STR_DRY
#ifndef D_STR_MAX
#define D_STR_MAX "Max"
#endif // D_STR_MAX
#ifndef D_STR_MAXIMUM
#define D_STR_MAXIMUM "Maximum"
#endif // D_STR_MAXIMUM
#ifndef D_STR_MIN
#define D_STR_MIN "Min"
#endif // D_STR_MIN
#ifndef D_STR_MINIMUM
#define D_STR_MINIMUM "Minimum"
#endif // D_STR_MINIMUM
#ifndef D_STR_MED
#define D_STR_MED "Med"
#endif // D_STR_MED
#ifndef D_STR_MEDIUM
#define D_STR_MEDIUM "Medium"
#endif // D_STR_MEDIUM
#ifndef D_STR_HIGHEST
#define D_STR_HIGHEST "Highest"
#endif // D_STR_HIGHEST
#ifndef D_STR_HIGH
#define D_STR_HIGH "High"
#endif // D_STR_HIGH
#ifndef D_STR_HI
#define D_STR_HI "Hi"
#endif // D_STR_HI
#ifndef D_STR_MID
#define D_STR_MID "Mid"
#endif // D_STR_MID
#ifndef D_STR_MIDDLE
#define D_STR_MIDDLE "Middle"
#endif // D_STR_MIDDLE
#ifndef D_STR_LOW
#define D_STR_LOW "Low"
#endif // D_STR_LOW
#ifndef D_STR_LO
#define D_STR_LO "Lo"
#endif // D_STR_LO
#ifndef D_STR_LOWEST
#define D_STR_LOWEST "Lowest"
#endif // D_STR_LOWEST
#ifndef D_STR_RIGHT
#define D_STR_RIGHT "Right"
#endif // D_STR_RIGHT
#ifndef D_STR_MAXRIGHT
#define D_STR_MAXRIGHT D_STR_MAX " " D_STR_RIGHT // Set `D_STR_MAX` first!
#endif // D_STR_MAXRIGHT
#ifndef D_STR_RIGHTMAX_NOSPACE
#define D_STR_RIGHTMAX_NOSPACE D_STR_RIGHT D_STR_MAX // Set `D_STR_MAX` first!
#endif // D_STR_RIGHTMAX_NOSPACE
#ifndef D_STR_LEFT
#define D_STR_LEFT "Left"
#endif // D_STR_LEFT
#ifndef D_STR_MAXLEFT
#define D_STR_MAXLEFT D_STR_MAX " " D_STR_LEFT // Set `D_STR_MAX` first!
#endif // D_STR_MAXLEFT
#ifndef D_STR_LEFTMAX_NOSPACE
#define D_STR_LEFTMAX_NOSPACE D_STR_LEFT D_STR_MAX // Set `D_STR_MAX` first!
#endif // D_STR_LEFTMAX_NOSPACE
#ifndef D_STR_WIDE
#define D_STR_WIDE "Wide"
#endif // D_STR_WIDE
#ifndef D_STR_CENTRE
#define D_STR_CENTRE "Centre"
#endif // D_STR_CENTRE
#ifndef D_STR_TOP
#define D_STR_TOP "Top"
#endif // D_STR_TOP
#ifndef D_STR_BOTTOM
#define D_STR_BOTTOM "Bottom"
#endif // D_STR_BOTTOM
// Compound words/phrases/descriptions from pre-defined words.
// Note: Obviously these need to be defined *after* their component words.
#ifndef D_STR_EYEAUTO
#define D_STR_EYEAUTO D_STR_EYE " " D_STR_AUTO
#endif // D_STR_EYEAUTO
#ifndef D_STR_LIGHTTOGGLE
#define D_STR_LIGHTTOGGLE D_STR_LIGHT " " D_STR_TOGGLE
#endif // D_STR_LIGHTTOGGLE
#ifndef D_STR_OUTSIDEQUIET
#define D_STR_OUTSIDEQUIET D_STR_OUTSIDE " " D_STR_QUIET
#endif // D_STR_OUTSIDEQUIET
#ifndef D_STR_POWERTOGGLE
#define D_STR_POWERTOGGLE D_STR_POWER " " D_STR_TOGGLE
#endif // D_STR_POWERTOGGLE
#ifndef D_STR_POWERBUTTON
#define D_STR_POWERBUTTON D_STR_POWER " " D_STR_BUTTON
#endif // D_STR_POWERBUTTON
#ifndef D_STR_PREVIOUSPOWER
#define D_STR_PREVIOUSPOWER D_STR_PREVIOUS " " D_STR_POWER
#endif // D_STR_PREVIOUSPOWER
#ifndef D_STR_DISPLAYTEMP
#define D_STR_DISPLAYTEMP D_STR_DISPLAY " " D_STR_TEMP
#endif // D_STR_DISPLAYTEMP
#ifndef D_STR_SENSORTEMP
#define D_STR_SENSORTEMP D_STR_SENSOR " " D_STR_TEMP
#endif // D_STR_SENSORTEMP
#ifndef D_STR_SLEEP_TIMER
#define D_STR_SLEEP_TIMER D_STR_SLEEP " " D_STR_TIMER
#endif // D_STR_SLEEP_TIMER
#ifndef D_STR_SWINGVMODE
#define D_STR_SWINGVMODE D_STR_SWINGV " " D_STR_MODE
#endif // D_STR_SWINGVMODE
#ifndef D_STR_SWINGVTOGGLE
#define D_STR_SWINGVTOGGLE D_STR_SWINGV " " D_STR_TOGGLE
#endif // D_STR_SWINGVTOGGLE
// Separators
#ifndef D_CHR_TIME_SEP
#define D_CHR_TIME_SEP ':'
#endif // D_CHR_TIME_SEP
#ifndef D_STR_SPACELBRACE
#define D_STR_SPACELBRACE " ("
#endif // D_STR_SPACELBRACE
#ifndef D_STR_COMMASPACE
#define D_STR_COMMASPACE ", "
#endif // D_STR_COMMASPACE
#ifndef D_STR_COLONSPACE
#define D_STR_COLONSPACE ": "
#endif // D_STR_COLONSPACE
#ifndef D_STR_DAY
#define D_STR_DAY "Day"
#endif // D_STR_DAY
#ifndef D_STR_DAYS
#define D_STR_DAYS D_STR_DAY "s"
#endif // D_STR_DAYS
#ifndef D_STR_HOUR
#define D_STR_HOUR "Hour"
#endif // D_STR_HOUR
#ifndef D_STR_HOURS
#define D_STR_HOURS D_STR_HOUR "s"
#endif // D_STR_HOURS
#ifndef D_STR_MINUTE
#define D_STR_MINUTE "Minute"
#endif // D_STR_MINUTE
#ifndef D_STR_MINUTES
#define D_STR_MINUTES D_STR_MINUTE "s"
#endif // D_STR_MINUTES
#ifndef D_STR_SECOND
#define D_STR_SECOND "Second"
#endif // D_STR_SECOND
#ifndef D_STR_SECONDS
#define D_STR_SECONDS D_STR_SECOND "s"
#endif // D_STR_SECONDS
#ifndef D_STR_NOW
#define D_STR_NOW "Now"
#endif // D_STR_NOW
#ifndef D_STR_THREELETTERDAYS
#define D_STR_THREELETTERDAYS "SunMonTueWedThuFriSat"
#endif // D_STR_THREELETTERDAYS
#ifndef D_STR_YES
#define D_STR_YES "Yes"
#endif // D_STR_YES
#ifndef D_STR_NO
#define D_STR_NO "No"
#endif // D_STR_NO
#ifndef D_STR_TRUE
#define D_STR_TRUE "True"
#endif // D_STR_TRUE
#ifndef D_STR_FALSE
#define D_STR_FALSE "False"
#endif // D_STR_FALSE
#ifndef D_STR_REPEAT
#define D_STR_REPEAT "Repeat"
#endif // D_STR_REPEAT
#ifndef D_STR_CODE
#define D_STR_CODE "Code"
#endif // D_STR_CODE
#ifndef D_STR_BITS
#define D_STR_BITS "Bits"
#endif // D_STR_BITS
// Protocols Names
#ifndef D_STR_AIRWELL
#define D_STR_AIRWELL "AIRWELL"
#endif // D_STR_AIRWELL
#ifndef D_STR_AIWA_RC_T501
#define D_STR_AIWA_RC_T501 "AIWA_RC_T501"
#endif // D_STR_AIWA_RC_T501
#ifndef D_STR_AMCOR
#define D_STR_AMCOR "AMCOR"
#endif // D_STR_AMCOR
#ifndef D_STR_ARGO
#define D_STR_ARGO "ARGO"
#endif // D_STR_ARGO
#ifndef D_STR_CARRIER_AC
#define D_STR_CARRIER_AC "CARRIER_AC"
#endif // D_STR_CARRIER_AC
#ifndef D_STR_CARRIER_AC40
#define D_STR_CARRIER_AC40 D_STR_CARRIER_AC "40"
#endif // D_STR_CARRIER_AC40
#ifndef D_STR_CARRIER_AC64
#define D_STR_CARRIER_AC64 D_STR_CARRIER_AC "64"
#endif // D_STR_CARRIER_AC64
#ifndef D_STR_COOLIX
#define D_STR_COOLIX "COOLIX"
#endif // D_STR_COOLIX
#ifndef D_STR_CORONA_AC
#define D_STR_CORONA_AC "CORONA_AC"
#endif // D_STR_CORONA_AC
#ifndef D_STR_DAIKIN
#define D_STR_DAIKIN "DAIKIN"
#endif // D_STR_DAIKIN
#ifndef D_STR_DAIKIN128
#define D_STR_DAIKIN128 "DAIKIN128"
#endif // D_STR_DAIKIN128
#ifndef D_STR_DAIKIN152
#define D_STR_DAIKIN152 "DAIKIN152"
#endif // D_STR_DAIKIN152
#ifndef D_STR_DAIKIN160
#define D_STR_DAIKIN160 "DAIKIN160"
#endif // D_STR_DAIKIN160
#ifndef D_STR_DAIKIN176
#define D_STR_DAIKIN176 "DAIKIN176"
#endif // D_STR_DAIKIN176
#ifndef D_STR_DAIKIN2
#define D_STR_DAIKIN2 "DAIKIN2"
#endif // D_STR_DAIKIN2
#ifndef D_STR_DAIKIN216
#define D_STR_DAIKIN216 "DAIKIN216"
#endif // D_STR_DAIKIN216
#ifndef D_STR_DAIKIN64
#define D_STR_DAIKIN64 "DAIKIN64"
#endif // D_STR_DAIKIN64
#ifndef D_STR_DELONGHI_AC
#define D_STR_DELONGHI_AC "DELONGHI_AC"
#endif // D_STR_DELONGHI_AC
#ifndef D_STR_DENON
#define D_STR_DENON "DENON"
#endif // D_STR_DENON
#ifndef D_STR_DISH
#define D_STR_DISH "DISH"
#endif // D_STR_DISH
#ifndef D_STR_DOSHISHA
#define D_STR_DOSHISHA "DOSHISHA"
#endif // D_STR_DOSHISHA
#ifndef D_STR_ELECTRA_AC
#define D_STR_ELECTRA_AC "ELECTRA_AC"
#endif // D_STR_ELECTRA_AC
#ifndef D_STR_EPSON
#define D_STR_EPSON "EPSON"
#endif // D_STR_EPSON
#ifndef D_STR_FUJITSU_AC
#define D_STR_FUJITSU_AC "FUJITSU_AC"
#endif // D_STR_FUJITSU_AC
#ifndef D_STR_GICABLE
#define D_STR_GICABLE "GICABLE"
#endif // D_STR_GICABLE
#ifndef D_STR_GLOBALCACHE
#define D_STR_GLOBALCACHE "GLOBALCACHE"
#endif // D_STR_GLOBALCACHE
#ifndef D_STR_GOODWEATHER
#define D_STR_GOODWEATHER "GOODWEATHER"
#endif // D_STR_GOODWEATHER
#ifndef D_STR_GREE
#define D_STR_GREE "GREE"
#endif // D_STR_GREE
#ifndef D_STR_HAIER_AC
#define D_STR_HAIER_AC "HAIER_AC"
#endif // D_STR_HAIER_AC
#ifndef D_STR_HAIER_AC_YRW02
#define D_STR_HAIER_AC_YRW02 "HAIER_AC_YRW02"
#endif // D_STR_HAIER_AC_YRW02
#ifndef D_STR_HITACHI_AC
#define D_STR_HITACHI_AC "HITACHI_AC"
#endif // D_STR_HITACHI_AC
#ifndef D_STR_HITACHI_AC1
#define D_STR_HITACHI_AC1 "HITACHI_AC1"
#endif // D_STR_HITACHI_AC1
#ifndef D_STR_HITACHI_AC2
#define D_STR_HITACHI_AC2 "HITACHI_AC2"
#endif // D_STR_HITACHI_AC2
#ifndef D_STR_HITACHI_AC3
#define D_STR_HITACHI_AC3 "HITACHI_AC3"
#endif // D_STR_HITACHI_AC3
#ifndef D_STR_HITACHI_AC344
#define D_STR_HITACHI_AC344 "HITACHI_AC344"
#endif // D_STR_HITACHI_AC344
#ifndef D_STR_HITACHI_AC424
#define D_STR_HITACHI_AC424 "HITACHI_AC424"
#endif // D_STR_HITACHI_AC424
#ifndef D_STR_INAX
#define D_STR_INAX "INAX"
#endif // D_STR_INAX
#ifndef D_STR_JVC
#define D_STR_JVC "JVC"
#endif // D_STR_JVC
#ifndef D_STR_KELVINATOR
#define D_STR_KELVINATOR "KELVINATOR"
#endif // D_STR_KELVINATOR
#ifndef D_STR_LASERTAG
#define D_STR_LASERTAG "LASERTAG"
#endif // D_STR_LASERTAG
#ifndef D_STR_LEGOPF
#define D_STR_LEGOPF "LEGOPF"
#endif // D_STR_LEGOPF
#ifndef D_STR_LG
#define D_STR_LG "LG"
#endif // D_STR_LG
#ifndef D_STR_LG2
#define D_STR_LG2 "LG2"
#endif // D_STR_LG2
#ifndef D_STR_LUTRON
#define D_STR_LUTRON "LUTRON"
#endif // D_STR_LUTRON
#ifndef D_STR_MAGIQUEST
#define D_STR_MAGIQUEST "MAGIQUEST"
#endif // D_STR_MAGIQUEST
#ifndef D_STR_MIDEA
#define D_STR_MIDEA "MIDEA"
#endif // D_STR_MIDEA
#ifndef D_STR_MIDEA24
#define D_STR_MIDEA24 "MIDEA24"
#endif // D_STR_MIDEA24
#ifndef D_STR_MITSUBISHI
#define D_STR_MITSUBISHI "MITSUBISHI"
#endif // D_STR_MITSUBISHI
#ifndef D_STR_MITSUBISHI112
#define D_STR_MITSUBISHI112 "MITSUBISHI112"
#endif // D_STR_MITSUBISHI112
#ifndef D_STR_MITSUBISHI136
#define D_STR_MITSUBISHI136 "MITSUBISHI136"
#endif // D_STR_MITSUBISHI136
#ifndef D_STR_MITSUBISHI2
#define D_STR_MITSUBISHI2 "MITSUBISHI2"
#endif // D_STR_MITSUBISHI2
#ifndef D_STR_MITSUBISHI_AC
#define D_STR_MITSUBISHI_AC "MITSUBISHI_AC"
#endif // D_STR_MITSUBISHI_AC
#ifndef D_STR_MITSUBISHI_HEAVY_152
#define D_STR_MITSUBISHI_HEAVY_152 "MITSUBISHI_HEAVY_152"
#endif // D_STR_MITSUBISHI_HEAVY_152
#ifndef D_STR_MITSUBISHI_HEAVY_88
#define D_STR_MITSUBISHI_HEAVY_88 "MITSUBISHI_HEAVY_88"
#endif // D_STR_MITSUBISHI_HEAVY_88
#ifndef D_STR_MULTIBRACKETS
#define D_STR_MULTIBRACKETS "MULTIBRACKETS"
#endif // D_STR_MULTIBRACKETS
#ifndef D_STR_MWM
#define D_STR_MWM "MWM"
#endif // D_STR_MWM
#ifndef D_STR_NEC
#define D_STR_NEC "NEC"
#endif // D_STR_NEC
#ifndef D_STR_NEC_LIKE
#define D_STR_NEC_LIKE D_STR_NEC "_LIKE"
#endif // D_STR_NEC_LIKE
#ifndef D_STR_NEC_NON_STRICT
#define D_STR_NEC_NON_STRICT D_STR_NEC " (NON-STRICT)"
#endif // D_STR_NEC_NON_STRICT
#ifndef D_STR_NEOCLIMA
#define D_STR_NEOCLIMA "NEOCLIMA"
#endif // D_STR_NEOCLIMA
#ifndef D_STR_NIKAI
#define D_STR_NIKAI "NIKAI"
#endif // D_STR_NIKAI
#ifndef D_STR_PANASONIC
#define D_STR_PANASONIC "PANASONIC"
#endif // D_STR_PANASONIC
#ifndef D_STR_PANASONIC_AC
#define D_STR_PANASONIC_AC "PANASONIC_AC"
#endif // D_STR_PANASONIC_AC
#ifndef D_STR_PIONEER
#define D_STR_PIONEER "PIONEER"
#endif // D_STR_PIONEER
#ifndef D_STR_PRONTO
#define D_STR_PRONTO "PRONTO"
#endif // D_STR_PRONTO
#ifndef D_STR_RAW
#define D_STR_RAW "RAW"
#endif // D_STR_RAW
#ifndef D_STR_RC5
#define D_STR_RC5 "RC5"
#endif // D_STR_RC5
#ifndef D_STR_RC5X
#define D_STR_RC5X "RC5X"
#endif // D_STR_RC5X
#ifndef D_STR_RC6
#define D_STR_RC6 "RC6"
#endif // D_STR_RC6
#ifndef D_STR_RCMM
#define D_STR_RCMM "RCMM"
#endif // D_STR_RCMM
#ifndef D_STR_SAMSUNG
#define D_STR_SAMSUNG "SAMSUNG"
#endif // D_STR_SAMSUNG
#ifndef D_STR_SAMSUNG36
#define D_STR_SAMSUNG36 "SAMSUNG36"
#endif // D_STR_SAMSUNG36
#ifndef D_STR_SAMSUNG_AC
#define D_STR_SAMSUNG_AC "SAMSUNG_AC"
#endif // D_STR_SAMSUNG_AC
#ifndef D_STR_SANYO
#define D_STR_SANYO "SANYO"
#endif // D_STR_SANYO
#ifndef D_STR_SANYO_LC7461
#define D_STR_SANYO_LC7461 "SANYO_LC7461"
#endif // D_STR_SANYO_LC7461
#ifndef D_STR_SHARP
#define D_STR_SHARP "SHARP"
#endif // D_STR_SHARP
#ifndef D_STR_SHARP_AC
#define D_STR_SHARP_AC "SHARP_AC"
#endif // D_STR_SHARP_AC
#ifndef D_STR_SHERWOOD
#define D_STR_SHERWOOD "SHERWOOD"
#endif // D_STR_SHERWOOD
#ifndef D_STR_SONY
#define D_STR_SONY "SONY"
#endif // D_STR_SONY
#ifndef D_STR_SONY_38K
#define D_STR_SONY_38K "SONY_38K"
#endif // D_STR_SONY_38K
#ifndef D_STR_SYMPHONY
#define D_STR_SYMPHONY "SYMPHONY"
#endif // D_STR_SYMPHONY
#ifndef D_STR_TCL112AC
#define D_STR_TCL112AC "TCL112AC"
#endif // D_STR_TCL112AC
#ifndef D_STR_TECO
#define D_STR_TECO "TECO"
#endif // D_STR_TECO
#ifndef D_STR_TOSHIBA_AC
#define D_STR_TOSHIBA_AC "TOSHIBA_AC"
#endif // D_STR_TOSHIBA_AC
#ifndef D_STR_TROTEC
#define D_STR_TROTEC "TROTEC"
#endif // D_STR_TROTEC
#ifndef D_STR_UNUSED
#define D_STR_UNUSED "UNUSED"
#endif // D_STR_UNUSED
#ifndef D_STR_VESTEL_AC
#define D_STR_VESTEL_AC "VESTEL_AC"
#endif // D_STR_VESTEL_AC
#ifndef D_STR_WHIRLPOOL_AC
#define D_STR_WHIRLPOOL_AC "WHIRLPOOL_AC"
#endif // D_STR_WHIRLPOOL_AC
#ifndef D_STR_WHYNTER
#define D_STR_WHYNTER "WHYNTER"
#endif // D_STR_WHYNTER
#ifndef D_STR_ZEPEAL
#define D_STR_ZEPEAL "ZEPEAL"
#endif // D_STR_ZEPEAL
// IRrecvDumpV2+
#ifndef D_STR_TIMESTAMP
#define D_STR_TIMESTAMP "Timestamp"
#endif // D_STR_TIMESTAMP
#ifndef D_STR_LIBRARY
#define D_STR_LIBRARY "Library"
#endif // D_STR_LIBRARY
#ifndef D_STR_MESGDESC
#define D_STR_MESGDESC "Mesg Desc."
#endif // D_STR_MESGDESC
#ifndef D_STR_IRRECVDUMP_STARTUP
#define D_STR_IRRECVDUMP_STARTUP \
"IRrecvDump is now running and waiting for IR input on Pin %d"
#endif // D_STR_IRRECVDUMP_STARTUP
#ifndef D_WARN_BUFFERFULL
#define D_WARN_BUFFERFULL \
"WARNING: IR code is too big for buffer (>= %d). " \
"This result shouldn't be trusted until this is resolved. " \
"Edit & increase `kCaptureBufferSize`."
#endif // D_WARN_BUFFERFULL
#endif // LOCALE_DEFAULTS_H_

View File

@@ -0,0 +1,8 @@
// Copyright 2019 - David Conran (@crankyoldgit)
// Locale/language file for English / Australia.
// This file will override the default values located in `defaults.h`.
#ifndef LOCALE_EN_AU_H_
#define LOCALE_EN_AU_H_
// Nothing should really need to be set here, as en-AU is the default
// locale/language.
#endif // LOCALE_EN_AU_H__

View File

@@ -0,0 +1,8 @@
// Copyright 2019 - David Conran (@crankyoldgit)
// Locale/language file for English / Ireland.
// This file will override the default values located in `defaults.h`.
#ifndef LOCALE_EN_IE_H_
#define LOCALE_EN_IE_H_
// Nothing should really need to be set here, as en-IE is the same as en-AU,
// which is the default locale/language.
#endif // LOCALE_EN_IE_H__

View File

@@ -0,0 +1,8 @@
// Copyright 2019 - David Conran (@crankyoldgit)
// Locale/language file for English / United Kingdom.
// This file will override the default values located in `defaults.h`.
#ifndef LOCALE_EN_UK_H_
#define LOCALE_EN_UK_H_
// Nothing should really need to be set here, as en-UK is the same as en-AU,
// which is the default locale/language.
#endif // LOCALE_EN_UK_H__

View File

@@ -0,0 +1,13 @@
// Copyright 2019 - David Conran (@crankyoldgit)
// Locale/language file for English / United States of America.
// This file will override the default values located in `defaults.h`.
#ifndef LOCALE_EN_US_H_
#define LOCALE_EN_US_H_
// Not much should really need to be set here, as English is the default
// locale/language.
// Overrides to the default.
#define D_STR_CENTRE "Center"
#define D_STR_MOULD "Mold"
#endif // LOCALE_EN_US_H__

View File

@@ -0,0 +1,136 @@
// Copyright 2019 - Carlos (@charlieyv)
// Locale/language file for Spanish / Spain.
// This file will override the default values located in `defaults.h`.
#ifndef LOCALE_ES_ES_H_
#define LOCALE_ES_ES_H_
#define D_STR_UNKNOWN "DESCONOCIDO"
#define D_STR_PROTOCOL "Protocolo"
#define D_STR_POWER "Poder"
#define D_STR_PREVIOUS "Anterior"
#define D_STR_PREVIOUSPOWER D_STR_POWER " " D_STR_PREVIOUS
#define D_STR_ON "Encendido"
#define D_STR_OFF "Apagado"
#define D_STR_MODE "Modo"
#define D_STR_TOGGLE "Palanca"
#define D_STR_SLEEP "Dormir"
#define D_STR_LIGHT "Luz"
#define D_STR_POWERFUL "Poderoso"
#define D_STR_QUIET "Silencio"
#define D_STR_ECONO "Econo"
#define D_STR_SWING "Oscilar"
#define D_STR_SWINGH D_STR_SWING"(H)"
#define D_STR_SWINGV D_STR_SWING"(V)"
#define D_STR_BEEP "Bip"
#define D_STR_MOULD "Molde"
#define D_STR_CLEAN "Limpiar"
#define D_STR_PURIFY "Purificar"
#define D_STR_TIMER "Temporizador"
#define D_STR_ONTIMER D_STR_ON " " D_STR_TIMER
#define D_STR_OFFTIMER D_STR_OFF " " D_STR_TIMER
#define D_STR_CLOCK "Reloj"
#define D_STR_COMMAND "Comando"
#define D_STR_HEALTH "Salud"
#define D_STR_MODEL "Modelo"
#define D_STR_TEMP "Temperatura"
#define D_STR_HUMID "Humedo"
#define D_STR_SAVE "Guardar"
#define D_STR_EYE "Ojo"
#define D_STR_FOLLOW "Seguir"
#define D_STR_FRESH "Fresco"
#define D_STR_HOLD "Mantener"
#define D_STR_8C_HEAT "8C " D_STR_HEAT
#define D_STR_BUTTON "Boton"
#define D_STR_NIGHT "Noche"
#define D_STR_SILENT "Silencio"
#define D_STR_FILTER "Filtro"
#define D_STR_UP "Arriba"
#define D_STR_TEMPUP D_STR_TEMP " " D_STR_UP
#define D_STR_DOWN "Abajo"
#define D_STR_TEMPDOWN D_STR_TEMP " " D_STR_DOWN
#define D_STR_CHANGE "Cambiar"
#define D_STR_START "Comenzar"
#define D_STR_STOP "Parar"
#define D_STR_MOVE "Mover"
#define D_STR_SET "Fijar"
#define D_STR_CANCEL "Cancelar"
#define D_STR_COMFORT "Comodo"
#define D_STR_WEEKLY "Semanal"
#define D_STR_WEEKLYTIMER D_STR_WEEKLY " " D_STR_TIMER
#define D_STR_LAST "Ultimo"
#define D_STR_FAST "Rapido"
#define D_STR_SLOW "Lento"
#define D_STR_AIRFLOW "Flujo de Aire"
#define D_STR_STEP "Paso"
#define D_STR_OUTSIDE "Afuera"
#define D_STR_LOUD "Ruidoso"
#define D_STR_UPPER "Superior"
#define D_STR_LOWER "Inferior"
#define D_STR_BREEZE "Brisa"
#define D_STR_CIRCULATE "Circular"
#define D_STR_CEILING "Techo"
#define D_STR_WALL "Pared"
#define D_STR_ROOM "Cuarto"
#define D_STR_6THSENSE "6to. Sentido"
#define D_STR_ZONEFOLLOW "Zona Seguir"
#define D_STR_FIXED "Fijo"
#define D_STR_AUTOMATIC "Automatico"
#define D_STR_COOL "Frio"
#define D_STR_HEAT "Calor"
#define D_STR_FAN "Ventilador"
#define D_STR_FANONLY "ventilador_solamente"
#define D_STR_DRY "Seco"
#define D_STR_MAX "Max"
#define D_STR_MAXIMUM "Maximo"
#define D_STR_MIN "Min"
#define D_STR_MINIMUM "Minimo"
#define D_STR_MED "Med"
#define D_STR_MEDIUM "Medio"
#define D_STR_HIGHEST "Mas Alto"
#define D_STR_HIGH "Alto"
#define D_STR_HI D_STR_HIGH
#define D_STR_MIDDLE "Medio"
#define D_STR_MID D_STR_MIDDLE
#define D_STR_LOW "Bajo"
#define D_STR_LO D_STR_LOW
#define D_STR_LOWEST "Mas Bajo"
#define D_STR_RIGHT "Derecha"
#define D_STR_MAXRIGHT D_STR_MAX " " D_STR_RIGHT
#define D_STR_RIGHTMAX_NOSPACE D_STR_RIGHT D_STR_MAX
#define D_STR_LEFT "Izquierda"
#define D_STR_MAXLEFT D_STR_MAX " " D_STR_LEFT
#define D_STR_LEFTMAX_NOSPACE D_STR_LEFT D_STR_MAX
#define D_STR_WIDE "Ancho"
#define D_STR_CENTRE "Centro"
#define D_STR_TOP "Tope"
#define D_STR_BOTTOM "Fondo"
#define D_STR_DAY "Dia"
#define D_STR_DAYS D_STR_DAY "s"
#define D_STR_HOUR "Hora"
#define D_STR_HOURS D_STR_HOUR "s"
#define D_STR_MINUTE "Minuto"
#define D_STR_MINUTES D_STR_MINUTE "s"
#define D_STR_SECOND "Segundo"
#define D_STR_SECONDS D_STR_SECOND "s"
#define D_STR_NOW "Ahora"
#define D_STR_THREELETTERDAYS "DomLunMarMieJueVieSab"
#define D_STR_YES "Si"
#define D_STR_NO "No"
#define D_STR_TRUE "Cierto"
#define D_STR_FALSE "Falso"
#define D_STR_REPEAT "Repetir"
#define D_STR_CODE "Codigo"
// IRrecvDumpV2+
#define D_STR_TIMESTAMP "marca de tiempo"
#define D_STR_LIBRARY "Libreria"
#define D_STR_IRRECVDUMP_STARTUP \
"IRrecvDump esta ahora corriendo y esperando por comando IR en Pin %d"
#ifndef D_WARN_BUFFERFULL
#define D_WARN_BUFFERFULL \
"WARNING: Codigo IR es muy grande para el buffer (>= %d). "\
"Este resultando no debe ser reconocido hasta que esto sea resuelto." \
"Edite & incremente `kCaptureBufferSize`."
#endif // D_WARN_BUFFERFULL
#endif // LOCALE_ES_ES_H_

View File

@@ -0,0 +1,117 @@
// Copyright 2019 - Mathieu D(@Knackie)
// Locale/language file for French / Quebec.
// This file will override the default values located in `defaults.h`.
#ifndef LOCALE_FR_FR_H_
#define LOCALE_FR_FR_H_
#define D_STR_UNKNOWN "INCONNU"
#define D_STR_PROTOCOL "Protocole"
#define D_STR_TOGGLE "Bascule"
#define D_STR_SLEEP "Pause"
#define D_STR_LIGHT "Lumière"
#define D_STR_POWERFUL "Puissance"
#define D_STR_PREVIOUS "Precedente"
#define D_STR_PREVIOUSPOWER D_STR_POWER " " D_STR_PREVIOUS
#define D_STR_QUIET "Silence"
#define D_STR_ECONO "Economie"
#define D_STR_BEEP "Bip"
#define D_STR_MOULD "Moule"
#define D_STR_CLEAN "Nettoyer"
#define D_STR_PURIFY "Purifier"
#define D_STR_ON "On"
#define D_STR_OFF "Off"
#define D_STR_ONTIMER D_STR_ON " " D_STR_TIMER
#define D_STR_OFFTIMER D_STR_OFF " " D_STR_TIMER
#define D_STR_CLOCK "Heure"
#define D_STR_COMMAND "Commandement"
#define D_STR_HEALTH "Santé"
#define D_STR_TEMP "Temporaire"
#define D_STR_HUMID "Humidité"
#define D_STR_SAVE "Sauvegarder"
#define D_STR_EYE "Oeil"
#define D_STR_FOLLOW "Suivre"
#define D_STR_FRESH "Frais"
#define D_STR_HOLD "Maintenir"
#define D_STR_BUTTON "Bouton"
#define D_STR_NIGHT "Nuit"
#define D_STR_SILENT "Silence"
#define D_STR_UP "En haut"
#define D_STR_TEMPUP D_STR_TEMP " " D_STR_UP
#define D_STR_DOWN "En bas"
#define D_STR_TEMPDOWN D_STR_TEMP " " D_STR_DOWN
#define D_STR_CHANGE "Changement"
#define D_STR_SET "Mettre"
#define D_STR_CANCEL "Annuler"
#define D_STR_COMFORT "Confort"
#define D_STR_WEEKLY "Chaque semaine"
#define D_STR_WEEKLYTIMER D_STR_WEEKLY " " D_STR_TIMER
#define D_STR_FAST "Rapide"
#define D_STR_SLOW "Lent"
#define D_STR_AIRFLOW "Ebauche"
#define D_STR_STEP "Etape"
#define D_STR_OUTSIDE "Plein air"
#define D_STR_LOUD "Fort"
#define D_STR_UPPER "Au dessus"
#define D_STR_LOWER "En dessous"
#define D_STR_BREEZE "Brise"
#define D_STR_CIRCULATE "Faire circuler"
#define D_STR_CEILING "Plafond"
#define D_STR_WALL "Mur"
#define D_STR_ROOM "Pièce"
#define D_STR_6THSENSE "6ter Sens"
#define D_STR_FIXED "Fixer"
#define D_STR_AUTOMATIC "Automatique"
#define D_STR_MANUAL "Manuel"
#define D_STR_COOL "Frais"
#define D_STR_HEAT "Chaleur"
#define D_STR_FAN "Ventillateur"
#define D_STR_FANONLY "Seul_fan"
#define D_STR_DRY "Sec"
#define D_STR_MEDIUM "Moyen"
#define D_STR_HIGHEST "Le plus haut"
#define D_STR_HIGH "Haut"
#define D_STR_HI "H"
#define D_STR_MID "M"
#define D_STR_MIDDLE "Moitié"
#define D_STR_LOW "Bas"
#define D_STR_LO "B"
#define D_STR_LOWEST "Le plus bas"
#define D_STR_RIGHT "Droite"
#define D_STR_MAX "Max"
#define D_STR_MAXRIGHT D_STR_MAX " " D_STR_RIGHT
#define D_STR_RIGHTMAX_NOSPACE D_STR_RIGHT D_STR_MAX
#define D_STR_LEFT "Gauche"
#define D_STR_MAXLEFT D_STR_MAX " " D_STR_LEFT
#define D_STR_LEFTMAX_NOSPACE D_STR_LEFT D_STR_MAX
#define D_STR_WIDE "Large"
#define D_STR_TOP "Au-dessus"
#define D_STR_BOTTOM "En-dessous"
#define D_STR_DAY "Jour"
#define D_STR_HOUR "Heure"
#define D_STR_SECOND "Seconde"
#define D_STR_NOW "Maintenant"
#define D_STR_THREELETTERDAYS "LunMarMerJeuVenSamDim"
#define D_STR_YES "Oui"
#define D_STR_NO "Non"
#define D_STR_TRUE "Vrai"
#define D_STR_FALSE "Faux"
#define D_STR_REPEAT "Répetition"
// IRrecvDumpV2+
#define D_STR_TIMESTAMP "Horodatage"
#define D_STR_LIBRARY "Bibliothèque"
#define D_STR_MESGDESC "Rèférence"
#define D_STR_IRRECVDUMP_STARTUP \
"IRrecvDump fonctionne et attend lentrée IR sur la broche %d"
#define D_WARN_BUFFERFULL \
"ATTENTION: IR Code est trop gros pour le buffer (>= %d). " \
"Le résultat ne doit pas être approuvé avant que cela soit résolu. " \
"Modifier et agrandir `kCaptureBufferSize`."
#endif // LOCALE_FR_FR_H_

View File

@@ -0,0 +1,159 @@
// Copyright 2020 - Enrico Gueli (@egueli)
// Locale/language file for Italian.
// This file will override the default values located in `defaults.h`.
#ifndef LOCALE_IT_IT_H_
#define LOCALE_IT_IT_H_
#define D_STR_UNKNOWN "SCONOSCIUTO"
#define D_STR_PROTOCOL "Protocollo"
#define D_STR_POWER "Accensione"
#define D_STR_PREVIOUS "Precedente"
#define D_STR_PREVIOUSPOWER D_STR_POWER " " D_STR_PREVIOUS
#define D_STR_ON "Acceso"
#define D_STR_OFF "Spento"
#define D_STR_MODE "Modalità"
#define D_STR_TOGGLE "Alterna"
#define D_STR_SLEEP "Sonno"
#define D_STR_LIGHT "Leggero"
#define D_STR_POWERFUL "Forte"
#define D_STR_QUIET "Silenzioso"
#define D_STR_ECONO "Eco"
#define D_STR_SWING "Swing"
#define D_STR_SWINGH D_STR_SWING"(O)" // Set `D_STR_SWING` first!
#define D_STR_SWINGV D_STR_SWING"(V)" // Set `D_STR_SWING` first!
#define D_STR_MOULD "Muffa"
#define D_STR_CLEAN "Pulizia"
#define D_STR_PURIFY "Purifica"
#define D_STR_TIMER "Timer"
#define D_STR_ONTIMER D_STR_ON " " D_STR_TIMER // Set `D_STR_ON` first!
#define D_STR_OFFTIMER D_STR_OFF " " D_STR_TIMER // Set `D_STR_OFF` first!
#define D_STR_CLOCK "Orologio"
#define D_STR_COMMAND "Comando"
#define D_STR_MODEL "Modello"
#define D_STR_TEMP "Temp"
#define D_STR_HUMID "Umido"
#define D_STR_SAVE "Salva"
#define D_STR_EYE "Occhio"
#define D_STR_FOLLOW "Segui"
#define D_STR_ION "Ioni"
#define D_STR_FRESH "Fresco"
#define D_STR_HOLD "Mantieni"
#define D_STR_8C_HEAT "8C " D_STR_HEAT // Set `D_STR_HEAT` first!
#define D_STR_BUTTON "Pulsante"
#define D_STR_NIGHT "Notte"
#define D_STR_SILENT "Silenzioso"
#define D_STR_FILTER "Filtro"
#define D_STR_UP "Su"
#define D_STR_TEMPUP D_STR_TEMP " " D_STR_UP // Set `D_STR_TEMP` first!
#define D_STR_DOWN "Giù"
#define D_STR_TEMPDOWN D_STR_TEMP " " D_STR_DOWN // Set `D_STR_TEMP` first!
#define D_STR_CHANGE "Cambia"
#define D_STR_START "Avvia"
#define D_STR_STOP "Ferma"
#define D_STR_MOVE "Muovi"
#define D_STR_SET "Imposta"
#define D_STR_CANCEL "Annulla"
#define D_STR_SENSOR "Sensore"
#define D_STR_WEEKLY "Settimanale"
#define D_STR_WEEKLYTIMER D_STR_WEEKLY " " D_STR_TIMER // Needs `D_STR_WEEKLY`!
#define D_STR_LAST "Ultimo"
#define D_STR_FAST "Veloce"
#define D_STR_SLOW "Lento"
#define D_STR_AIRFLOW "Flusso d'aria"
#define D_STR_STEP "Passo"
#define D_STR_NA "N/D"
#define D_STR_OUTSIDE "Esterno"
#define D_STR_LOUD "Rumoroso"
#define D_STR_UPPER "Superiore"
#define D_STR_LOWER "Inferiore"
#define D_STR_CIRCULATE "Circolare"
#define D_STR_CEILING "Soffitto"
#define D_STR_WALL "Muro"
#define D_STR_ROOM "Camera"
#define D_STR_FIXED "Fisso"
#define D_STR_AUTO "Auto"
#define D_STR_AUTOMATIC "Automatico"
#define D_STR_MANUAL "Manuale"
#define D_STR_COOL "Fresco"
#define D_STR_HEAT "Caldo"
#define D_STR_FAN "Ventola"
#define D_STR_FANONLY "solo_ventola"
#define D_STR_DRY "Secco"
#define D_STR_MAX "Max"
#define D_STR_MAXIMUM "Massimo"
#define D_STR_MINIMUM "Minimo"
#define D_STR_MEDIUM "Medio"
#define D_STR_HIGHEST "Molto alto"
#define D_STR_HIGH "Alto"
#define D_STR_MID "Med"
#define D_STR_MIDDLE "Medio"
#define D_STR_LOW "Basso"
#define D_STR_LOWEST "Bassissimo"
#define D_STR_RIGHT "Destra"
#define D_STR_MAXRIGHT D_STR_MAX " " D_STR_RIGHT // Set `D_STR_MAX` first!
#define D_STR_RIGHTMAX_NOSPACE D_STR_RIGHT D_STR_MAX // Set `D_STR_MAX` first!
#define D_STR_LEFT "Sinistra"
#define D_STR_MAXLEFT D_STR_MAX " " D_STR_LEFT // Set `D_STR_MAX` first!
#define D_STR_LEFTMAX_NOSPACE D_STR_LEFT D_STR_MAX // Set `D_STR_MAX` first!
#define D_STR_WIDE "Largo"
#define D_STR_CENTRE "Centro"
#define D_STR_TOP "Superiore"
#define D_STR_BOTTOM "Inferiore"
// Compound words/phrases/descriptions from pre-defined words.
// Note: Obviously these need to be defined *after* their component words.
#define D_STR_EYEAUTO D_STR_EYE " " D_STR_AUTO
#define D_STR_LIGHTTOGGLE D_STR_LIGHT " " D_STR_TOGGLE
#define D_STR_OUTSIDEQUIET D_STR_OUTSIDE " " D_STR_QUIET
#define D_STR_POWERTOGGLE D_STR_POWER " " D_STR_TOGGLE
#define D_STR_SENSORTEMP D_STR_SENSOR " " D_STR_TEMP
#define D_STR_SLEEP_TIMER D_STR_SLEEP " " D_STR_TIMER
#define D_STR_SWINGVMODE D_STR_SWINGV " " D_STR_MODE
#define D_STR_SWINGVTOGGLE D_STR_SWINGV " " D_STR_TOGGLE
// Separators
#ifndef D_CHR_TIME_SEP
#define D_CHR_TIME_SEP '.'
#endif // D_CHR_TIME_SEP
#define D_STR_SPACELBRACE " ("
#define D_STR_COMMASPACE ", "
#define D_STR_COLONSPACE ": "
#define D_STR_DAY "Giorno"
#define D_STR_DAYS D_STR_DAY "s"
#define D_STR_HOUR "Ore"
#define D_STR_HOURS D_STR_HOUR "s"
#define D_STR_MINUTE "Minuti"
#define D_STR_MINUTES D_STR_MINUTE "s"
#define D_STR_SECOND "Secondi"
#define D_STR_SECONDS D_STR_SECOND "s"
#define D_STR_NOW "Adesso"
#define D_STR_THREELETTERDAYS "DomLunMarMerGioVenSab"
#define D_STR_YES "Sì"
#define D_STR_TRUE "Vero"
#define D_STR_FALSE "Falso"
#define D_STR_REPEAT "Ripeti"
#define D_STR_CODE "Codice"
#define D_STR_BITS "Bit"
// IRrecvDumpV2+
#define D_STR_LIBRARY "Libreria"
#define D_STR_MESGDESC "Desc. Mess."
#define D_STR_IRRECVDUMP_STARTUP \
"IRrecvDump è ora attivo e in attesa di segnali IR dal pin %d"
#ifndef D_WARN_BUFFERFULL
#define D_WARN_BUFFERFULL \
"ATTENZIONE: il codice IR è troppo grande per il buffer (>= %d). " \
"Non fare affidamento a questi risultati finché questo problema " \
"non è risolto." \
"Modifica e aumenta `kCaptureBufferSize`."
#endif // D_WARN_BUFFERFULL
#endif // LOCALE_IT_IT_H_

View File

@@ -0,0 +1,465 @@
// Copyright 2020 - MiaoYi (@Caffreyfans)
// Locale/language file for China / Simplified.
// This file will override the default values located in `defaults.h`.
#ifndef LOCALE_ZH_CN_H_
#define LOCALE_ZH_CN_H_
#ifndef D_STR_UNKNOWN
#define D_STR_UNKNOWN "未知"
#endif // D_STR_UNKNOWN
#ifndef D_STR_PROTOCOL
#define D_STR_PROTOCOL "协议"
#endif // D_STR_PROTOCOL
#ifndef D_STR_POWER
#define D_STR_POWER "电源"
#endif // D_STR_POWER
#ifndef D_STR_PREVIOUS
#define D_STR_PREVIOUS "以前"
#endif // D_STR_PREVIOUS
#ifndef D_STR_ON
#define D_STR_ON "开"
#endif // D_STR_ON
#ifndef D_STR_OFF
#define D_STR_OFF "关"
#endif // D_STR_OFF
#ifndef D_STR_MODE
#define D_STR_MODE "模式"
#endif // D_STR_MODE
#ifndef D_STR_TOGGLE
#define D_STR_TOGGLE "切换"
#endif // D_STR_TOGGLE
#ifndef D_STR_TURBO
#define D_STR_TURBO "强力"
#endif // D_STR_TURBO
#ifndef D_STR_SUPER
#define D_STR_SUPER "超级"
#endif // D_STR_SUPER
#ifndef D_STR_SLEEP
#define D_STR_SLEEP "睡眠"
#endif // D_STR_SLEEP
#ifndef D_STR_LIGHT
#define D_STR_LIGHT "灯光"
#endif // D_STR_LIGHT
#ifndef D_STR_POWERFUL
#define D_STR_POWERFUL "强劲模式"
#endif // D_STR_POWERFUL
#ifndef D_STR_QUIET
#define D_STR_QUIET "安静"
#endif // D_STR_QUIET
#ifndef D_STR_ECONO
#define D_STR_ECONO "经济"
#endif // D_STR_ECONO
#ifndef D_STR_SWING
#define D_STR_SWING "扫风"
#endif // D_STR_SWING
#ifndef D_STR_SWINGH
#define D_STR_SWINGH D_STR_SWING"(H)" // Set `D_STR_SWING` first!
#endif // D_STR_SWINGH
#ifndef D_STR_SWINGV
#define D_STR_SWINGV D_STR_SWING"(V)" // Set `D_STR_SWING` first!
#endif // D_STR_SWINGV
#ifndef D_STR_BEEP
#define D_STR_BEEP "蜂鸣"
#endif // D_STR_BEEP
#ifndef D_STR_MOULD
#define D_STR_MOULD "模子"
#endif // D_STR_MOULD
#ifndef D_STR_CLEAN
#define D_STR_CLEAN "清洁"
#endif // D_STR_CLEAN
#ifndef D_STR_PURIFY
#define D_STR_PURIFY "净化"
#endif // D_STR_PURIFY
#ifndef D_STR_TIMER
#define D_STR_TIMER "计时器"
#endif // D_STR_TIMER
#ifndef D_STR_ONTIMER
#define D_STR_ONTIMER D_STR_ON " " D_STR_TIMER // Set `D_STR_ON` first!
#endif // D_STR_ONTIMER
#ifndef D_STR_OFFTIMER
#define D_STR_OFFTIMER D_STR_OFF " " D_STR_TIMER // Set `D_STR_OFF` first!
#endif // D_STR_OFFTIMER
#ifndef D_STR_CLOCK
#define D_STR_CLOCK "时钟"
#endif // D_STR_CLOCK
#ifndef D_STR_COMMAND
#define D_STR_COMMAND "命令"
#endif // D_STR_COMMAND
#ifndef D_STR_XFAN
#define D_STR_XFAN "XFan"
#endif // D_STR_XFAN
#ifndef D_STR_HEALTH
#define D_STR_HEALTH "健康"
#endif // D_STR_HEALTH
#ifndef D_STR_MODEL
#define D_STR_MODEL "模式"
#endif // D_STR_MODEL
#ifndef D_STR_TEMP
#define D_STR_TEMP "温度"
#endif // D_STR_TEMP
#ifndef D_STR_IFEEL
#define D_STR_IFEEL "IFeel"
#endif // D_STR_IFEEL
#ifndef D_STR_HUMID
#define D_STR_HUMID "湿度"
#endif // D_STR_HUMID
#ifndef D_STR_SAVE
#define D_STR_SAVE "保存"
#endif // D_STR_SAVE
#ifndef D_STR_EYE
#define D_STR_EYE "眼"
#endif // D_STR_EYE
#ifndef D_STR_FOLLOW
#define D_STR_FOLLOW "跟随"
#endif // D_STR_FOLLOW
#ifndef D_STR_ION
#define D_STR_ION "Ion"
#endif // D_STR_ION
#ifndef D_STR_FRESH
#define D_STR_FRESH "刷新"
#endif // D_STR_FRESH
#ifndef D_STR_HOLD
#define D_STR_HOLD "保持"
#endif // D_STR_HOLD
#ifndef D_STR_8C_HEAT
#define D_STR_8C_HEAT "8C " D_STR_HEAT // Set `D_STR_HEAT` first!
#endif // D_STR_8C_HEAT
#ifndef D_STR_BUTTON
#define D_STR_BUTTON "按钮"
#endif // D_STR_BUTTON
#ifndef D_STR_NIGHT
#define D_STR_NIGHT "夜间"
#endif // D_STR_NIGHT
#ifndef D_STR_SILENT
#define D_STR_SILENT "安静"
#endif // D_STR_SILENT
#ifndef D_STR_FILTER
#define D_STR_FILTER "过滤"
#endif // D_STR_FILTER
#ifndef D_STR_3D
#define D_STR_3D "3D"
#endif // D_STR_3D
#ifndef D_STR_CELSIUS
#define D_STR_CELSIUS "摄氏度"
#endif // D_STR_CELSIUS
#ifndef D_STR_UP
#define D_STR_UP "上"
#endif // D_STR_UP
#ifndef D_STR_TEMPUP
#define D_STR_TEMPUP D_STR_TEMP " " D_STR_UP // Set `D_STR_TEMP` first!
#endif // D_STR_TEMPUP
#ifndef D_STR_DOWN
#define D_STR_DOWN "下"
#endif // D_STR_DOWN
#ifndef D_STR_TEMPDOWN
#define D_STR_TEMPDOWN D_STR_TEMP " " D_STR_DOWN // Set `D_STR_TEMP` first!
#endif // D_STR_TEMPDOWN
#ifndef D_STR_CHANGE
#define D_STR_CHANGE "改变"
#endif // D_STR_CHANGE
#ifndef D_STR_START
#define D_STR_START "开始"
#endif // D_STR_START
#ifndef D_STR_STOP
#define D_STR_STOP "结束"
#endif // D_STR_STOP
#ifndef D_STR_MOVE
#define D_STR_MOVE "移动"
#endif // D_STR_MOVE
#ifndef D_STR_SET
#define D_STR_SET "设置"
#endif // D_STR_SET
#ifndef D_STR_CANCEL
#define D_STR_CANCEL "取消"
#endif // D_STR_CANCEL
#ifndef D_STR_COMFORT
#define D_STR_COMFORT "舒适"
#endif // D_STR_COMFORT
#ifndef D_STR_SENSOR
#define D_STR_SENSOR "传感器"
#endif // D_STR_SENSOR
#ifndef D_STR_WEEKLY
#define D_STR_WEEKLY "每周"
#endif // D_STR_WEEKLY
#ifndef D_STR_WEEKLYTIMER
#define D_STR_WEEKLYTIMER D_STR_WEEKLY " " D_STR_TIMER // Needs `D_STR_WEEKLY`!
#endif // D_STR_WEEKLYTIMER
#ifndef D_STR_WIFI
#define D_STR_WIFI "WiFi"
#endif // D_STR_WIFI
#ifndef D_STR_LAST
#define D_STR_LAST "最近"
#endif // D_STR_LAST
#ifndef D_STR_FAST
#define D_STR_FAST "快"
#endif // D_STR_FAST
#ifndef D_STR_SLOW
#define D_STR_SLOW "慢"
#endif // D_STR_SLOW
#ifndef D_STR_AIRFLOW
#define D_STR_AIRFLOW "空气流动"
#endif // D_STR_AIRFLOW
#ifndef D_STR_STEP
#define D_STR_STEP "步"
#endif // D_STR_STEP
#ifndef D_STR_NA
#define D_STR_NA "不适用"
#endif // D_STR_NA
#ifndef D_STR_OUTSIDE
#define D_STR_OUTSIDE "室外"
#endif // D_STR_OUTSIDE
#ifndef D_STR_LOUD
#define D_STR_LOUD "大声"
#endif // D_STR_LOUD
#ifndef D_STR_UPPER
#define D_STR_UPPER "更高"
#endif // D_STR_UPPER
#ifndef D_STR_LOWER
#define D_STR_LOWER "更低"
#endif // D_STR_LOWER
#ifndef D_STR_BREEZE
#define D_STR_BREEZE "微风"
#endif // D_STR_BREEZE
#ifndef D_STR_CIRCULATE
#define D_STR_CIRCULATE "流通"
#endif // D_STR_CIRCULATE
#ifndef D_STR_CEILING
#define D_STR_CEILING "天花板"
#endif // D_STR_CEILING
#ifndef D_STR_WALL
#define D_STR_WALL "墙"
#endif // D_STR_WALL
#ifndef D_STR_ROOM
#define D_STR_ROOM "房间"
#endif // D_STR_ROOM
#ifndef D_STR_6THSENSE
#define D_STR_6THSENSE "第六感"
#endif // D_STR_6THSENSE
#ifndef D_STR_ZONEFOLLOW
#define D_STR_ZONEFOLLOW "区域跟随"
#endif // D_STR_ZONEFOLLOW
#ifndef D_STR_FIXED
#define D_STR_FIXED "固定"
#endif // D_STR_FIXED
#ifndef D_STR_AUTO
#define D_STR_AUTO "自动"
#endif // D_STR_AUTO
#ifndef D_STR_AUTOMATIC
#define D_STR_AUTOMATIC "自动的"
#endif // D_STR_AUTOMATIC
#ifndef D_STR_MANUAL
#define D_STR_MANUAL "手动"
#endif // D_STR_MANUAL
#ifndef D_STR_COOL
#define D_STR_COOL "制冷"
#endif // D_STR_COOL
#ifndef D_STR_HEAT
#define D_STR_HEAT "加热"
#endif // D_STR_HEAT
#ifndef D_STR_FAN
#define D_STR_FAN "风扇"
#endif // D_STR_FAN
#ifndef D_STR_FANONLY
#define D_STR_FANONLY "仅风扇"
#endif // D_STR_FANONLY
#ifndef D_STR_DRY
#define D_STR_DRY "干燥"
#endif // D_STR_DRY
#ifndef D_STR_MAX
#define D_STR_MAX "最大"
#endif // D_STR_MAX
#ifndef D_STR_MAXIMUM
#define D_STR_MAXIMUM "最小"
#endif // D_STR_MAXIMUM
#ifndef D_STR_MIN
#define D_STR_MIN "最低"
#endif // D_STR_MIN
#ifndef D_STR_MINIMUM
#define D_STR_MINIMUM "最低"
#endif // D_STR_MINIMUM
#ifndef D_STR_MED
#define D_STR_MED "中"
#endif // D_STR_MED
#ifndef D_STR_MEDIUM
#define D_STR_MEDIUM "中"
#endif // D_STR_MEDIUM
#ifndef D_STR_HIGHEST
#define D_STR_HIGHEST "最高"
#endif // D_STR_HIGHEST
#ifndef D_STR_HIGH
#define D_STR_HIGH "高"
#endif // D_STR_HIGH
#ifndef D_STR_HI
#define D_STR_HI "嗨"
#endif // D_STR_HI
#ifndef D_STR_MID
#define D_STR_MID "中"
#endif // D_STR_MID
#ifndef D_STR_MIDDLE
#define D_STR_MIDDLE "居中"
#endif // D_STR_MIDDLE
#ifndef D_STR_LOW
#define D_STR_LOW "低"
#endif // D_STR_LOW
#ifndef D_STR_LO
#define D_STR_LO "低"
#endif // D_STR_LO
#ifndef D_STR_LOWEST
#define D_STR_LOWEST "最低"
#endif // D_STR_LOWEST
#ifndef D_STR_RIGHT
#define D_STR_RIGHT "右"
#endif // D_STR_RIGHT
#ifndef D_STR_MAXRIGHT
#define D_STR_MAXRIGHT D_STR_MAX " " D_STR_RIGHT // Set `D_STR_MAX` first!
#endif // D_STR_MAXRIGHT
#ifndef D_STR_RIGHTMAX_NOSPACE
#define D_STR_RIGHTMAX_NOSPACE D_STR_RIGHT D_STR_MAX // Set `D_STR_MAX` first!
#endif // D_STR_RIGHTMAX_NOSPACE
#ifndef D_STR_LEFT
#define D_STR_LEFT "左"
#endif // D_STR_LEFT
#ifndef D_STR_MAXLEFT
#define D_STR_MAXLEFT D_STR_MAX " " D_STR_LEFT // Set `D_STR_MAX` first!
#endif // D_STR_MAXLEFT
#ifndef D_STR_LEFTMAX_NOSPACE
#define D_STR_LEFTMAX_NOSPACE D_STR_LEFT D_STR_MAX // Set `D_STR_MAX` first!
#endif // D_STR_LEFTMAX_NOSPACE
#ifndef D_STR_WIDE
#define D_STR_WIDE "扫风"
#endif // D_STR_WIDE
#ifndef D_STR_CENTRE
#define D_STR_CENTRE "中间"
#endif // D_STR_CENTRE
#ifndef D_STR_TOP
#define D_STR_TOP "上部"
#endif // D_STR_TOP
#ifndef D_STR_BOTTOM
#define D_STR_BOTTOM "底部"
#endif // D_STR_BOTTOM
// Compound words/phrases/descriptions from pre-defined words.
// Note: Obviously these need to be defined *after* their component words.
#ifndef D_STR_EYEAUTO
#define D_STR_EYEAUTO D_STR_EYE " " D_STR_AUTO
#endif // D_STR_EYEAUTO
#ifndef D_STR_LIGHTTOGGLE
#define D_STR_LIGHTTOGGLE D_STR_LIGHT " " D_STR_TOGGLE
#endif // D_STR_LIGHTTOGGLE
#ifndef D_STR_OUTSIDEQUIET
#define D_STR_OUTSIDEQUIET D_STR_OUTSIDE " " D_STR_QUIET
#endif // D_STR_OUTSIDEQUIET
#ifndef D_STR_POWERTOGGLE
#define D_STR_POWERTOGGLE D_STR_POWER " " D_STR_TOGGLE
#endif // D_STR_POWERTOGGLE
#ifndef D_STR_PREVIOUSPOWER
#define D_STR_PREVIOUSPOWER D_STR_PREVIOUS " " D_STR_POWER
#endif // D_STR_PREVIOUSPOWER
#ifndef D_STR_SENSORTEMP
#define D_STR_SENSORTEMP D_STR_SENSOR " " D_STR_TEMP
#endif // D_STR_SENSORTEMP
#ifndef D_STR_SLEEP_TIMER
#define D_STR_SLEEP_TIMER D_STR_SLEEP " " D_STR_TIMER
#endif // D_STR_SLEEP_TIMER
#ifndef D_STR_SWINGVMODE
#define D_STR_SWINGVMODE D_STR_SWINGV " " D_STR_MODE
#endif // D_STR_SWINGVMODE
#ifndef D_STR_SWINGVTOGGLE
#define D_STR_SWINGVTOGGLE D_STR_SWINGV " " D_STR_TOGGLE
#endif // D_STR_SWINGVTOGGLE
// Separators
#ifndef D_CHR_TIME_SEP
#define D_CHR_TIME_SEP ':'
#endif // D_CHR_TIME_SEP
#ifndef D_STR_SPACELBRACE
#define D_STR_SPACELBRACE " ("
#endif // D_STR_SPACELBRACE
#ifndef D_STR_COMMASPACE
#define D_STR_COMMASPACE ", "
#endif // D_STR_COMMASPACE
#ifndef D_STR_COLONSPACE
#define D_STR_COLONSPACE ": "
#endif // D_STR_COLONSPACE
#ifndef D_STR_DAY
#define D_STR_DAY "天"
#endif // D_STR_DAY
#ifndef D_STR_DAYS
#define D_STR_DAYS D_STR_DAY "s"
#endif // D_STR_DAYS
#ifndef D_STR_HOUR
#define D_STR_HOUR "时"
#endif // D_STR_HOUR
#ifndef D_STR_HOURS
#define D_STR_HOURS D_STR_HOUR "s"
#endif // D_STR_HOURS
#ifndef D_STR_MINUTE
#define D_STR_MINUTE "分"
#endif // D_STR_MINUTE
#ifndef D_STR_MINUTES
#define D_STR_MINUTES D_STR_MINUTE "s"
#endif // D_STR_MINUTES
#ifndef D_STR_SECOND
#define D_STR_SECOND "秒"
#endif // D_STR_SECOND
#ifndef D_STR_SECONDS
#define D_STR_SECONDS D_STR_SECOND "s"
#endif // D_STR_SECONDS
#ifndef D_STR_NOW
#define D_STR_NOW "现在"
#endif // D_STR_NOW
/* This is not three letter days. Disabled.
#ifndef D_STR_THREELETTERDAYS
#define D_STR_THREELETTERDAYS "周一至周末"
#endif // D_STR_THREELETTERDAYS
*/
#ifndef D_STR_YES
#define D_STR_YES "是"
#endif // D_STR_YES
#ifndef D_STR_NO
#define D_STR_NO "否"
#endif // D_STR_NO
#ifndef D_STR_TRUE
#define D_STR_TRUE "正确"
#endif // D_STR_TRUE
#ifndef D_STR_FALSE
#define D_STR_FALSE "错误"
#endif // D_STR_FALSE
#ifndef D_STR_REPEAT
#define D_STR_REPEAT "重复"
#endif // D_STR_REPEAT
#ifndef D_STR_CODE
#define D_STR_CODE "代码"
#endif // D_STR_CODE
#ifndef D_STR_BITS
#define D_STR_BITS "位"
#endif // D_STR_BITS
// IRrecvDumpV2+
#ifndef D_STR_TIMESTAMP
#define D_STR_TIMESTAMP "时间戳记"
#endif // D_STR_TIMESTAMP
#ifndef D_STR_LIBRARY
#define D_STR_LIBRARY "库文件"
#endif // D_STR_LIBRARY
#ifndef D_STR_MESGDESC
#define D_STR_MESGDESC "等等信息"
#endif // D_STR_MESGDESC
#ifndef D_STR_IRRECVDUMP_STARTUP
#define D_STR_IRRECVDUMP_STARTUP \
"IRrecvDump 运行当中,等待红外信息输入位于引脚 %d"
#endif // D_STR_IRRECVDUMP_STARTUP
#ifndef D_WARN_BUFFERFULL
#define D_WARN_BUFFERFULL \
"警告: 红外编码数组过大(>= %d). " \
"在解决此问题之前,不应信任此结果. " \
"编辑并增加 `kCaptureBufferSize` 变量."
#endif // D_WARN_BUFFERFULL
#endif // LOCALE_ZH_CN_H_