# Version 3.10

## Version 3.10.0

💥 New features:

- Issue #81 - Modernize the internationalization utilities

  - The `guidata.utils.gettext_helpers` module, based on the `gettext` module, has been deprecated.

  - It has been replaced by a new module `guidata.utils.translations`, which provides a more modern and flexible way to handle translations, thanks to the `babel` library.

  - This change introduces a new script for managing translations, which may be used as follows:

    - Scan for new translations:

      - `python -m guidata.utils.translations scan --name <name> --directory <directory>`

      - or `guidata-translations scan --name <name> --directory <directory>`

    - Compile translations:

      - `python -m guidata.utils.translations compile --name <name> --directory <directory>`

      - or `guidata-translations compile --name <name> --directory <directory>`

    - More options are available, see the help message of the script:

      - `python -m guidata.utils.translations --help`

      - or `guidata-translations --help`

🛠️ Bug fixes:

- Issue #88 - `DictItem` default value persists across dataset instances (missing `deepcopy`)

  - This issue is as old as the `DictItem` class itself.

  - When using a `DictItem` in a dataset, if a value is set to the item instance, this value was incorrectly used as the default for the next instance of the same dataset class.

  - This happened because a `deepcopy` was not made when setting the defaults of the class items in `guidata.dataset.datatypes`.

  - The fix ensures that each dataset instance has its own independent default value for `DictItem`, preventing side effects from one instance to another.