anchor.diff:  
   +infobox
       |  #[strong API:] #[+api("language") #[code Language]]
  -    |  #[strong Usage:] #[+a("/docs/usage/adding-languages") Adding languages]
  +    |  #[strong Usage:] #[+a("/docs/usage/processing-text") Processing text]
   
   +h(3, "features-lemmatizer") Simple lookup-based lemmatization
   
  
positive.code: 
  +table(["Old", "New"])
      +row
          +cell #[code Language.save_to_directory]
          +cell #[+api("language#to_disk") #[code Language.to_disk]]
  
  
negative.code:     |  #[strong API:] #[+api("spacy#load") #[code spacy.load]]
      |  #[strong Usage:] #[+a("/docs/usage/saving-loading") Saving and loading]
  
  +h(3, "features-language") Improved language data and lazy loading
  
  p
      |  Language-specfic data now lives in its own submodule, #[code spacy.lang].
      |  Languages are lazy-loaded, i.e. only loaded when you import a
      |  #[code Language] class, or load a model that initialises one. This allows
      |  languages to contain more custom data, e.g. lemmatizer lookup tables, or
      |  complex regular expressions. The language data has also been tidied up
      |  and simplified. It's now also possible to overwrite the functions that
      |  compute lexical attributes like #[code like_num], and supply
      |  language-specific syntax iterators, e.g. to determine noun chunks.
  
  +infobox
      |  #[strong Code:] #[+src(gh("spaCy", "spacy/lang")) spacy/lang]
      |  #[strong Usage:] #[+a("/docs/usage/adding-languages") Adding languages]
  
  +h(3, "features-pipelines") Improved processing pipelines
  
  +aside-code("Example").
      from spacy.language import Language
  