How to change the language of dates in R

R
R tips
Author

Philippe Massicotte

Published

January 10, 2021

Recently, I had to make a ggplot2 graphic with data that contained dates. Let’s create some sample data with dates.

n <- 10

df <- tibble(
  x = seq(as.Date("2020-01-01"), as.Date("2020-10-10"), length.out = n),
  y = rnorm(n)
)

df
#> # A tibble: 10 × 2
#>    x                y
#>    <date>       <dbl>
#>  1 2020-01-01 -1.89  
#>  2 2020-02-01  1.83  
#>  3 2020-03-03  0.918 
#>  4 2020-04-04 -2.03  
#>  5 2020-05-05 -1.19  
#>  6 2020-06-06  0.832 
#>  7 2020-07-07 -1.71  
#>  8 2020-08-08  0.404 
#>  9 2020-09-08 -0.0135
#> 10 2020-10-10 -1.56

p <- df %>% 
  ggplot(aes(x = x, y = y)) +
  geom_point() +
  scale_x_date(date_breaks = "6 weeks", date_labels = "%B-%d")

p

My Linux system is configured in English, the dates are also displayed in English in the above graphic. If we want to use another language, we first have to edit the /etc/locale.gen file and un-comment the line(s) for the language(s) we want to use. For this particular example, I wanted to display the dates in French.

sudo nano /etc/locale.gen

My locale.gen configuration file.

In this file, I un-commented the fr_CA.UTF-8 UTF-8 line. Once done, save the file. Then, we have to regenerate the localization files using the locale-gen function.

sudo locale-gen fr_CA.UTF-8

Finally, within R, we can set the locale language with Sys.setlocale(). If we call the plot again, the dates are now displayed in French as expected.

Sys.setlocale("LC_TIME", "fr_CA.UTF-8")
#> [1] "fr_CA.UTF-8"
p

Session info

#> ─ Session info ───────────────────────────────────────────────────────────────────────────────────────────────────────
#>  setting  value
#>  version  R version 4.2.1 (2022-06-23)
#>  os       Ubuntu 22.04.1 LTS
#>  system   x86_64, linux-gnu
#>  ui       X11
#>  language en_CA:en
#>  collate  en_CA.UTF-8
#>  ctype    en_CA.UTF-8
#>  tz       America/Toronto
#>  date     2022-07-31
#>  pandoc   2.18 @ /usr/lib/rstudio/bin/quarto/bin/tools/ (via rmarkdown)
#> 
#> ─ Packages ───────────────────────────────────────────────────────────────────────────────────────────────────────────
#>  ! package       * version date (UTC) lib source
#>  P assertthat      0.2.1   2019-03-21 [?] CRAN (R 4.2.1)
#>  P backports       1.4.1   2021-12-13 [?] RSPM (R 4.2.0)
#>  P broom           1.0.0   2022-07-01 [?] RSPM (R 4.2.0)
#>  P cachem          1.0.6   2021-08-19 [?] CRAN (R 4.2.1)
#>  P callr           3.7.1   2022-07-13 [?] RSPM (R 4.2.0)
#>  P cellranger      1.1.0   2016-07-27 [?] CRAN (R 4.2.1)
#>  P cli             3.3.0   2022-04-25 [?] RSPM (R 4.2.0)
#>  P colorspace      2.0-3   2022-02-21 [?] RSPM (R 4.2.0)
#>  P crayon          1.5.1   2022-03-26 [?] RSPM (R 4.2.0)
#>  P DBI             1.1.3   2022-06-18 [?] RSPM (R 4.2.0)
#>  P dbplyr          2.2.1   2022-06-27 [?] RSPM (R 4.2.0)
#>  P devtools        2.4.4   2022-07-20 [?] RSPM (R 4.2.0)
#>  P digest          0.6.29  2021-12-01 [?] RSPM (R 4.2.0)
#>  P dplyr         * 1.0.9   2022-04-28 [?] RSPM (R 4.2.0)
#>  P ellipsis        0.3.2   2021-04-29 [?] CRAN (R 4.2.1)
#>  P evaluate        0.15    2022-02-18 [?] RSPM (R 4.2.0)
#>  P extrafont       0.18    2022-04-12 [?] RSPM (R 4.2.0)
#>  P extrafontdb     1.0     2012-06-11 [?] RSPM (R 4.2.0)
#>  P fansi           1.0.3   2022-03-24 [?] RSPM (R 4.2.0)
#>  P farver          2.1.1   2022-07-06 [?] RSPM (R 4.2.0)
#>  P fastmap         1.1.0   2021-01-25 [?] CRAN (R 4.2.1)
#>  P forcats       * 0.5.1   2021-01-27 [?] CRAN (R 4.2.1)
#>  P fs              1.5.2   2021-12-08 [?] RSPM (R 4.2.0)
#>  P gargle          1.2.0   2021-07-02 [?] CRAN (R 4.2.1)
#>  P generics        0.1.3   2022-07-05 [?] RSPM (R 4.2.0)
#>  P ggplot2       * 3.3.6   2022-05-03 [?] RSPM (R 4.2.0)
#>  P ggpmthemes    * 0.0.2   2022-07-29 [?] Github (pmassicotte/ggpmthemes@993d61e)
#>  P glue            1.6.2   2022-02-24 [?] RSPM (R 4.2.0)
#>  P googledrive     2.0.0   2021-07-08 [?] RSPM (R 4.2.0)
#>  P googlesheets4   1.0.0   2021-07-21 [?] RSPM (R 4.2.0)
#>  P gtable          0.3.0   2019-03-25 [?] CRAN (R 4.2.1)
#>  P haven           2.5.0   2022-04-15 [?] RSPM (R 4.2.0)
#>  P hms             1.1.1   2021-09-26 [?] RSPM (R 4.2.0)
#>  P htmltools       0.5.3   2022-07-18 [?] RSPM (R 4.2.0)
#>  P htmlwidgets     1.5.4   2021-09-08 [?] RSPM (R 4.2.0)
#>  P httpuv          1.6.5   2022-01-05 [?] RSPM (R 4.2.0)
#>  P httr            1.4.3   2022-05-04 [?] RSPM (R 4.2.0)
#>  P jsonlite        1.8.0   2022-02-22 [?] RSPM (R 4.2.0)
#>  P knitr           1.39    2022-04-26 [?] RSPM (R 4.2.0)
#>  P labeling        0.4.2   2020-10-20 [?] CRAN (R 4.2.1)
#>  P later           1.3.0   2021-08-18 [?] CRAN (R 4.2.1)
#>  P lifecycle       1.0.1   2021-09-24 [?] RSPM (R 4.2.0)
#>  P lubridate       1.8.0   2021-10-07 [?] RSPM (R 4.2.0)
#>  P magrittr        2.0.3   2022-03-30 [?] RSPM (R 4.2.0)
#>  P memoise         2.0.1   2021-11-26 [?] RSPM (R 4.2.0)
#>  P mime            0.12    2021-09-28 [?] RSPM (R 4.2.0)
#>  P miniUI          0.1.1.1 2018-05-18 [?] RSPM (R 4.2.0)
#>  P modelr          0.1.8   2020-05-19 [?] RSPM (R 4.2.0)
#>  P munsell         0.5.0   2018-06-12 [?] CRAN (R 4.2.1)
#>  P pillar          1.8.0   2022-07-18 [?] RSPM (R 4.2.0)
#>  P pkgbuild        1.3.1   2021-12-20 [?] RSPM (R 4.2.0)
#>  P pkgconfig       2.0.3   2019-09-22 [?] CRAN (R 4.2.1)
#>  P pkgload         1.3.0   2022-06-27 [?] RSPM (R 4.2.0)
#>  P prettyunits     1.1.1   2020-01-24 [?] RSPM (R 4.2.0)
#>  P processx        3.7.0   2022-07-07 [?] RSPM (R 4.2.0)
#>  P profvis         0.3.7   2020-11-02 [?] RSPM (R 4.2.0)
#>  P promises        1.2.0.1 2021-02-11 [?] RSPM (R 4.2.0)
#>  P ps              1.7.1   2022-06-18 [?] RSPM (R 4.2.0)
#>  P purrr         * 0.3.4   2020-04-17 [?] CRAN (R 4.2.1)
#>  P R6              2.5.1   2021-08-19 [?] CRAN (R 4.2.1)
#>  P Rcpp            1.0.9   2022-07-08 [?] RSPM (R 4.2.0)
#>  P readr         * 2.1.2   2022-01-30 [?] RSPM (R 4.2.0)
#>  P readxl          1.4.0   2022-03-28 [?] RSPM (R 4.2.0)
#>  P remotes         2.4.2   2021-11-30 [?] CRAN (R 4.2.1)
#>    renv            0.15.5  2022-05-26 [1] RSPM (R 4.2.0)
#>  P reprex          2.0.1   2021-08-05 [?] RSPM (R 4.2.0)
#>  P rlang           1.0.4   2022-07-12 [?] RSPM (R 4.2.0)
#>  P rmarkdown       2.14    2022-04-25 [?] RSPM (R 4.2.0)
#>  P rstudioapi      0.13    2020-11-12 [?] CRAN (R 4.2.1)
#>  P Rttf2pt1        1.3.10  2022-02-07 [?] RSPM (R 4.2.0)
#>  P rvest           1.0.2   2021-10-16 [?] RSPM (R 4.2.0)
#>  P scales          1.2.0   2022-04-13 [?] RSPM (R 4.2.0)
#>  P sessioninfo     1.2.2   2021-12-06 [?] RSPM (R 4.2.0)
#>  P shiny           1.7.2   2022-07-19 [?] RSPM (R 4.2.0)
#>  P stringi         1.7.8   2022-07-11 [?] RSPM (R 4.2.0)
#>  P stringr       * 1.4.0   2019-02-10 [?] CRAN (R 4.2.1)
#>  P tibble        * 3.1.8   2022-07-22 [?] RSPM (R 4.2.0)
#>  P tidyr         * 1.2.0   2022-02-01 [?] RSPM (R 4.2.0)
#>  P tidyselect      1.1.2   2022-02-21 [?] RSPM (R 4.2.0)
#>  P tidyverse     * 1.3.2   2022-07-18 [?] RSPM (R 4.2.0)
#>  P tzdb            0.3.0   2022-03-28 [?] RSPM (R 4.2.0)
#>  P urlchecker      1.0.1   2021-11-30 [?] RSPM (R 4.2.0)
#>  P usethis         2.1.6   2022-05-25 [?] CRAN (R 4.2.1)
#>  P utf8            1.2.2   2021-07-24 [?] CRAN (R 4.2.1)
#>  P vctrs           0.4.1   2022-04-13 [?] RSPM (R 4.2.0)
#>  P withr           2.5.0   2022-03-03 [?] RSPM (R 4.2.0)
#>  P xfun            0.31    2022-05-10 [?] RSPM (R 4.2.0)
#>  P xml2            1.3.3   2021-11-30 [?] RSPM (R 4.2.0)
#>  P xtable          1.8-4   2019-04-21 [?] CRAN (R 4.2.1)
#>  P yaml            2.3.5   2022-02-21 [?] RSPM (R 4.2.0)
#> 
#>  [1] /media/work/r-blog/renv/library/R-4.2/x86_64-pc-linux-gnu
#>  [2] /opt/R/4.2.1/lib/R/library
#> 
#>  P ── Loaded and on-disk path mismatch.
#> 
#> ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────