Skip to content

Commit d7fe936

Browse files
committed
Allow Language metadata to have multiple values
1 parent aee1f9e commit d7fe936

File tree

3 files changed

+12
-2
lines changed

3 files changed

+12
-2
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1010
### Changed
1111

1212
- Using pylibzim `3.1.0`
13+
- ZIM metadata check now allows multiple values (comma-separated) for `Language`
1314

1415
### Removed
1516

src/zimscraperlib/zim/metadata.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,12 @@ def validate_date(name: str, value: Union[datetime.datetime, datetime.date, str]
5959

6060
def validate_language(name: str, value: Union[Iterable[str], str]):
6161
"""ensures Language metadata is a single or list of ISO-639-3 codes"""
62-
if name == "Language" and not is_valid_iso_639_3(value):
63-
raise ValueError(f"{value} is not ISO-639-3.")
62+
if name == "Language":
63+
if isinstance(value, str):
64+
value = value.split(",")
65+
for code in value:
66+
if not is_valid_iso_639_3(code):
67+
raise ValueError(f"{code} is not ISO-639-3.")
6468

6569

6670
def validate_counter(name: str, value: str):

tests/zim/test_zim_creator.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -594,6 +594,11 @@ def test_config_metadata(tmp_path, png_image):
594594
("Language", "bam", True),
595595
("Language", "fr", False),
596596
("Language", "en", False),
597+
("Language", "fra,eng", True),
598+
("Language", "fra,eng,bam", True),
599+
("Language", "fra,en,bam", False),
600+
("Language", "eng,", False),
601+
("Language", "eng, fra", False),
597602
("Counter", "1", False),
598603
("Description", "X" * 80, True),
599604
("Description", "X" * 81, False),

0 commit comments

Comments
 (0)