mirror of https://github.com/eyhc1/rendercv.git
renderer: localize TODAY placeholder in `last_updated_date_style` (#111)
This commit is contained in:
parent
f1b4cc972d
commit
c8f33e9553
|
@ -289,6 +289,19 @@ locale_catalog:
|
||||||
- Oct
|
- Oct
|
||||||
- Nov
|
- Nov
|
||||||
- Dec
|
- Dec
|
||||||
|
full_names_of_months: # translation of the full month names
|
||||||
|
- January
|
||||||
|
- February
|
||||||
|
- March
|
||||||
|
- April
|
||||||
|
- May
|
||||||
|
- June
|
||||||
|
- July
|
||||||
|
- August
|
||||||
|
- September
|
||||||
|
- October
|
||||||
|
- November
|
||||||
|
- December
|
||||||
month: month # translation of the word "month"
|
month: month # translation of the word "month"
|
||||||
months: months # translation of the word "months"
|
months: months # translation of the word "months"
|
||||||
year: year # translation of the word "year"
|
year: year # translation of the word "year"
|
||||||
|
|
|
@ -75,7 +75,7 @@ def get_date_object(date: str | int) -> Date:
|
||||||
return date_object
|
return date_object
|
||||||
|
|
||||||
|
|
||||||
def format_date(date: Date) -> str:
|
def format_date(date: Date, use_full_name: bool = False) -> str:
|
||||||
"""Formats a `Date` object to a string in the following format: "Jan. 2021".
|
"""Formats a `Date` object to a string in the following format: "Jan. 2021".
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
@ -88,16 +88,21 @@ def format_date(date: Date) -> str:
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
date (Date): The date to format.
|
date (Date): The date to format.
|
||||||
|
use_full_name (bool, optional): If `True`, the full name of the month will be
|
||||||
|
used. Defaults to `False`.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
str: The formatted date.
|
str: The formatted date.
|
||||||
"""
|
"""
|
||||||
# Month abbreviations,
|
# Month abbreviations,
|
||||||
# taken from: https://web.library.yale.edu/cataloging/months
|
# taken from: https://web.library.yale.edu/cataloging/months
|
||||||
abbreviations_of_months = locale_catalog["abbreviations_for_months"]
|
if use_full_name:
|
||||||
|
month_names = locale_catalog["full_names_of_months"]
|
||||||
|
else:
|
||||||
|
month_names = locale_catalog["abbreviations_for_months"]
|
||||||
|
|
||||||
month = int(date.strftime("%m"))
|
month = int(date.strftime("%m"))
|
||||||
month_abbreviation = abbreviations_of_months[month - 1]
|
month_abbreviation = month_names[month - 1]
|
||||||
year = date.strftime(format="%Y")
|
year = date.strftime(format="%Y")
|
||||||
date_string = f"{month_abbreviation} {year}"
|
date_string = f"{month_abbreviation} {year}"
|
||||||
|
|
||||||
|
@ -1110,9 +1115,37 @@ class LocaleCatalog(RenderCVBaseModel):
|
||||||
description="Abbreviations of the months in the locale.",
|
description="Abbreviations of the months in the locale.",
|
||||||
validate_default=True, # to initialize the locale catalog with the default values
|
validate_default=True, # to initialize the locale catalog with the default values
|
||||||
)
|
)
|
||||||
|
full_names_of_months: Optional[
|
||||||
|
Annotated[list[str], at.Len(min_length=12, max_length=12)]
|
||||||
|
] = pydantic.Field(
|
||||||
|
default=[
|
||||||
|
"January",
|
||||||
|
"February",
|
||||||
|
"March",
|
||||||
|
"April",
|
||||||
|
"May",
|
||||||
|
"June",
|
||||||
|
"July",
|
||||||
|
"August",
|
||||||
|
"September",
|
||||||
|
"October",
|
||||||
|
"November",
|
||||||
|
"December",
|
||||||
|
],
|
||||||
|
title="Full Names of Months",
|
||||||
|
description="Full names of the months in the locale.",
|
||||||
|
validate_default=True, # to initialize the locale catalog with the default values
|
||||||
|
)
|
||||||
|
|
||||||
@pydantic.field_validator(
|
@pydantic.field_validator(
|
||||||
"month", "months", "year", "years", "present", "abbreviations_for_months", "to"
|
"month",
|
||||||
|
"months",
|
||||||
|
"year",
|
||||||
|
"years",
|
||||||
|
"present",
|
||||||
|
"abbreviations_for_months",
|
||||||
|
"to",
|
||||||
|
"full_names_of_months",
|
||||||
)
|
)
|
||||||
@classmethod
|
@classmethod
|
||||||
def update_translations(cls, value: str, info: pydantic.ValidationInfo) -> str:
|
def update_translations(cls, value: str, info: pydantic.ValidationInfo) -> str:
|
||||||
|
|
|
@ -87,7 +87,7 @@ class TemplatedFile:
|
||||||
cv=self.cv,
|
cv=self.cv,
|
||||||
design=self.design,
|
design=self.design,
|
||||||
entry=entry,
|
entry=entry,
|
||||||
today=Date.today().strftime("%B %Y"),
|
today=dm.format_date(Date.today(), use_full_name=True),
|
||||||
**kwargs,
|
**kwargs,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -690,6 +690,20 @@ def test_locale_catalog():
|
||||||
"11",
|
"11",
|
||||||
"12",
|
"12",
|
||||||
],
|
],
|
||||||
|
full_names_of_months=[
|
||||||
|
"1",
|
||||||
|
"2",
|
||||||
|
"3",
|
||||||
|
"4",
|
||||||
|
"5",
|
||||||
|
"6",
|
||||||
|
"7",
|
||||||
|
"8",
|
||||||
|
"9",
|
||||||
|
"10",
|
||||||
|
"11",
|
||||||
|
"12",
|
||||||
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
assert dm.locale_catalog == data_model.locale_catalog.model_dump()
|
assert dm.locale_catalog == data_model.locale_catalog.model_dump()
|
||||||
|
|
Loading…
Reference in New Issue