# Reference: report options {#report_options}
This section contains the options available in the skin configuration
file, `skin.conf`. The same options apply to the language files
found in the subdirectory `lang`, such as `lang/en.conf` for
English.
We recommend to put
- options that control the behavior of the skin into
`skin.conf`; and
- language dependent labels and texts into the language files.
It is worth noting that, like the main configuration file
`weewx.conf`, UTF-8 is used throughout.
## [Extras]
This section is available to add any static tags you might want to use
in your templates.
As an example, the `skin.conf` file for the *Seasons* skin
includes three options:
| Skin option | Template tag |
|---------------------|-----------------------------|
| `radar_img` | `$Extras.radar_img` |
| `radar_url` | `$Extras.radar_url` |
| `googleAnalyticsId` | `$Extras.googleAnalyticsId` |
If you take a look at the template `radar.inc` you will see
examples of testing for these tags.
#### radar_img
Set to an URL to show a local radar image for your region.
#### radar_url
If the radar image is clicked, the browser will go to this URL. This is
usually used to show a more detailed, close-up, radar picture.
For me in Oregon, setting the two options to:
``` ini
[Extras]
radar_img = http://radar.weather.gov/ridge/lite/N0R/RTX_loop.gif
radar_url = http://radar.weather.gov/ridge/radar.php?product=NCR&rid=RTX&loop=yes
```
results in a nice image of a radar centered on Portland, Oregon. When
you click on it, it gives you a detailed, animated view. If you live in
the USA, take a look at the [NOAA radar
website](http://radar.weather.gov/) to find a nice one that will work
for you. In other countries, you will have to consult your local weather
service.
#### googleAnalyticsId
If you have a [Google Analytics ID](https://www.google.com/analytics/),
you can set it here. The Google Analytics Javascript code will then be
included, enabling analytics of your website usage. If commented out,
the code will not be included.
### Extending `[Extras]`
Other tags can be added in a similar manner, including sub-sections. For
example, say you have added a video camera, and you would like to add a
still image with a hyperlink to a page with the video. You want all of
these options to be neatly contained in a sub-section.
``` ini
[Extras]
[[video]]
still = video_capture.jpg
hyperlink = http://www.eatatjoes.com/video.html
```
Then in your template you could refer to these as:
``` html
```
## [Labels]
This section defines various labels.
#### hemispheres
Comma separated list for the labels to be used for the four hemispheres.
The default is `N, S, E, W`.
#### latlon_formats
Comma separated list for the formatting to be used when converting
latitude and longitude to strings. There should be three elements:
1. The format to be used for whole degrees of latitude
2. The format to be used for whole degrees of longitude
3. The format to be used for minutes.
This allows you to decide whether you want leading zeroes. The
default includes leading zeroes and is `"%02d", "%03d", "%05.2f"`.
### [[Generic]]
This sub-section specifies default labels to be used for each
observation type. For example, options
``` ini
inTemp = Temperature inside the house
outTemp = Outside Temperature
UV = UV Index
```
would cause the given labels to be used for plots of `inTemp` and
`outTemp`. If no option is given, then the observation type
itself will be used (*e.g.*, `outTemp`).
## [Almanac]
This section controls what text to use for the almanac. It consists of
only one entry
#### moon_phases
This option is a comma separated list of labels to be used for the eight
phases of the moon. Default is `New, Waxing crescent, First quarter,
Waxing gibbous, Full, Waning gibbous, Last quarter, Waning
crescent`.
## [Units]
This section controls how units are managed and displayed.
### [[Groups]]
This sub-section lists all the *Unit Groups* and specifies which
measurement unit is to be used for each one of them.
As there are many different observational measurement types (such as
`outTemp`, `barometer`, etc.) used in WeeWX (more than 50
at last count), it would be tedious, not to say possibly inconsistent,
to specify a different measurement system for each one of them. At the
other extreme, requiring all of them to be "U.S. Customary" or
"Metric" seems overly restrictive. WeeWX has taken a middle route and
divided all the different observation types into 12 different *unit
groups*. A unit group is something like `group_temperature`. It
represents the measurement system to be used by all observation types
that are measured in temperature, such as inside temperature (type
`inTemp`), outside temperature (`outTemp`), dewpoint
(`dewpoint`), wind chill (`windchill`), and so on. If you
decide that you want unit group `group_temperature` to be
measured in `degree_C` then you are saying *all* members of its
group will be reported in degrees Celsius.
Note that the measurement unit is always specified in the singular. That
is, specify `degree_C` or `foot`, not `degrees_C`
or `feet`. See the *[Appendix: Units](../appendix/#units)* for more
information, including a concise summary of the groups, their members,
and which options can be used for each group.
#### group_altitude
Which measurement unit to be used for altitude. Possible options are
`foot` or `meter`.
#### group_direction
Which measurement unit to be used for direction. The only option is
`degree_compass`.
#### group_distance
Which measurement unit to be used for distance (such as for wind run).
Possible options are `mile` or `km`.
#### group_moisture
The measurement unit to be used for soil moisture. The only option is
`centibar`.
#### group_percent
The measurement unit to be used for percentages. The only option is
`percent`.
#### group_pressure
The measurement unit to be used for pressure. Possible options are one
of `inHg` (inches of mercury), `mbar`, `hPa`, or
`kPa`.
#### group_pressurerate
The measurement unit to be used for rate of change in pressure. Possible
options are one of `inHg_per_hour` (inches of mercury per hour),
`mbar_per_hour`, `hPa_per_hour`, or `kPa_per_hour`.
#### group_radiation
The measurement unit to be used for radiation. The only option is
`watt_per_meter_squared`.
#### group_rain
The measurement unit to be used for precipitation. Options are
`inch`, `cm`, or `mm`.
#### group_rainrate
The measurement unit to be used for rate of precipitation. Possible
options are one of `inch_per_hour`, `cm_per_hour`, or
`mm_per_hour`.
#### group_speed
The measurement unit to be used for wind speeds. Possible options are
one of `mile_per_hour`, `km_per_hour`, `knot`,
`meter_per_second`, or `beaufort`.
#### group_speed2
This group is similar to `group_speed`, but is used for
calculated wind speeds which typically have a slightly higher
resolution. Possible options are one `mile_per_hour2`,
`km_per_hour2`, `knot2`, or `meter_per_second2`.
#### group_temperature
The measurement unit to be used for temperatures. Options are
`degree_C`, [`degree_E`](https://xkcd.com/1923/),
`degree_F`, or `degree_K`.
#### group_volt
The measurement unit to be used for voltages. The only option is
`volt`.
### `[[StringFormats]]` {#Units_StringFormats}
This sub-section is used to specify what string format is to be used for
each unit when a quantity needs to be converted to a string. Typically,
this happens with y-axis labeling on plots and for statistics in HTML
file generation. For example, the options
``` ini
degree_C = %.1f
inch = %.2f
```
would specify that the given string formats are to be used when
formatting any temperature measured in degrees Celsius or any
precipitation amount measured in inches, respectively. The [formatting
codes are those used by
Python](https://docs.python.org/library/string.html#format-specification-mini-language),
and are very similar to C's `sprintf()` codes.
You can also specify what string to use for an invalid or unavailable
measurement (value `None`). For example,
``` ini
NONE = " N/A "
```
### `[[Labels]]` {#Units_Labels}
This sub-section specifies what label is to be used for each measurement
unit type. For example, the options
``` ini
degree_F = °F
inch = ' in'
```
would cause all temperatures to have unit labels `°F` and all
precipitation to have labels `in`. If any special symbols are to
be used (such as the degree sign) they should be encoded in UTF-8. This
is generally what most text editors use if you cut-and-paste from a
character map.
If the label includes two values, then the first is assumed to be the
singular form, the second the plural form. For example,
``` ini
foot = " foot", " feet"
...
day = " day", " days"
hour = " hour", " hours"
minute = " minute", " minutes"
second = " second", " seconds"
```
### `[[TimeFormats]]` {#Units_TimeFormats}
This sub-section specifies what time format to use for different time
*contexts*. For example, you might want to use a different format when
displaying the time in a day, versus the time in a month. It uses
[strftime()](https://docs.python.org/3/library/datetime.html#strftime-strptime-behavior)
formats. The default looks like this:
``` ini
[[TimeFormats]]
hour = %H:%M
day = %X
week = %X (%A)
month = %x %X
year = %x %X
rainyear = %x %X
current = %x %X
ephem_day = %X
ephem_year = %x %X
```
The specifiers `%x`, `%X`, and `%A` code locale
dependent date, time, and weekday names, respectively. Hence, if you set
an appropriate environment variable `LANG`, then the date and
times should follow local conventions (see section [Environment variable
LANG](../localization/#environment_variable_LANG) for details on how to do this).
However, the results may not look particularly nice, and you may want to
change them. For example, I use this in the U.S.:
``` ini
[[TimeFormats]]
#
# More attractive formats that work in most Western countries.
#
day = %H:%M
week = %H:%M on %A
month = %d-%b-%Y %H:%M
year = %d-%b-%Y %H:%M
rainyear = %d-%b-%Y %H:%M
current = %d-%b-%Y %H:%M
ephem_day = %H:%M
ephem_year = %d-%b-%Y %H:%M
```
The last two formats, `ephem_day` and `ephem_year` allow
the formatting to be set for almanac times The first,
`ephem_day`, is used for almanac times within the day, such as
sunrise or sunset. The second, `ephem_year`, is used for almanac
times within the year, such as the next equinox or full moon.
### `[[Ordinates]]` {#Units_Ordinates}
#### directions
Set to the abbreviations to be used for ordinal directions. By default,
this is `N, NNE, NE, ENE, E, ESE, SE, SSE, S, SSW, SW, WSW, W, WNW, NW,
NNW, N`.
### `[[DegreeDays]]` {#degreedays}
#### heating_base
#### cooling_base
#### growing_base
Set to the base temperature for calculating heating, cooling, and
growing degree-days, along with the unit to be used. Examples:
``` ini
heating_base = 65.0, degree_F
cooling_base = 20.0, degree_C
growing_base = 50.0, degree_F
```
### `[[Trend]]` {#trend}
#### time_delta
Set to the time difference over which you want trends to be calculated.
Alternatively, a [duration notation](../appendix#Durations) can be used. The default is 3 hours.
#### time_grace
When searching for a previous record to be used in calculating a trend,
a record within this amount of `time_delta` will be accepted.
Default is 300 seconds.
## `[Texts]` {#texts}
The section `[Texts]` holds static texts that are used in the
templates. Generally there are multiple language files, one for each
supported language, named by the language codes defined in
[ISO 639-1](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes).
The entries give the translation of the texts to the target language.
For example,
``` ini
[Texts]
"Current Conditions" = "Aktuelle Werte"
```
would cause "Aktuelle Werte" to be used whereever `$gettext("Current
Conditions"` appeared. See the section on
[`$gettext`](../cheetah/#internationalization-support-with-gettext).
!!! Note
Strings that include commas must be included in single or double quotes. Otherwise they
will be misinterpreted as a list.
## [CheetahGenerator] {#CheetahGenerator}
This section contains the options for the Cheetah generator. It applies
to `skin.conf` only.
#### search_list
This is the list of search list objects that will be scanned by the
template engine, looking for tags. See the section *[Defining new
tags](../cheetah/#defining_new_tags)* and the [Cheetah
documentation](https://cheetahtemplate.org/) for details on search
lists. If no `search_list` is specified, a default list
will be used.
#### search_list_extensions
This defines one or more search list objects that will be appended to
the `search_list`. For example, if you are using the
"seven day" and "forecast" search list extensions, the option would
look like
``` ini
search_list_extensions = user.seven_day.SevenDay, user.forecast.ForecastVariables
```
#### encoding
As Cheetah goes through the template, it substitutes strings for all tag
values. This option controls which encoding to use for the new strings.
The encoding can be chosen on a per-file basis. All the encodings
listed in the Python documentation [*Standard
Encodings*](https://docs.python.org/3/library/codecs.html#standard-encodings)
are available, as well as these WeeWX-specific encodings:
| Encoding | Comments |
| html_entities | Non 7-bit characters will be represented as HTML entities (e.g., the degree sign will be represented as "°") |
| strict_ascii | Non 7-bit characters will be ignored. |
| normalized_ascii | Replace accented characters with non-accented analogs (e.g., 'ö' will be replaced with 'o'). |