Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/roll/app/archive/status_output.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ def render_status_report(
f"{Msg.STATUS_UNINDEXED} {len(unindexed_folders)}",
"",
Msg.STATUS_ROLLS,
f"loaded: {status_counts.get('loaded', 0)}",
f"processed: {status_counts.get('processed', 0)}",
f"failed: {status_counts.get('failed', 0)}",
f"loaded {status_counts.get('loaded', 0)}",
f"processed {status_counts.get('processed', 0)}",
f"failed {status_counts.get('failed', 0)}",
f"{Msg.STATUS_NO_ROLL_TOML} {len(unindexed_folders)}",
]
)
Expand Down
126 changes: 44 additions & 82 deletions src/roll/messages/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ class Headers:
ARCHIVE_MISSING = Message(
"cli.archive_missing", "Архив не найден:", "Archive not found:"
)
STATUS_HEADER = Message("cli.status_header", "Состояние индекса", "Index status")
STATUS_HEADER = Message("cli.status_header", "Состояние", "Status")
STATUS_ARCHIVE_FOLDERS = Message(
"cli.status_archive_folders", "Папок в архиве:", "Folders in archive:"
)
Expand All @@ -65,9 +65,7 @@ class Headers:
"Не проиндексированные папки:",
"Unindexed folders:",
)
STATUS_ROLLS = Message(
"cli.status_rolls", "Пленки по статусам:", "Films by status:"
)
STATUS_ROLLS = Message("cli.status_rolls", "По статусам:", "By status:")
STATUS_NO_ROLL_TOML = Message(
"cli.status_no_roll_toml", "без roll.toml:", "without roll.toml:"
)
Expand All @@ -87,12 +85,10 @@ class Headers:

class Msg(Headers):
CLI_UNINITIALIZED = Message(
"cli.uninitialized", "roll не инициализирован.", "roll is not initialized."
"cli.uninitialized", "Архив не инициализирован.", "Archive not initialized."
)
CLI_INITIALIZED = Message(
"cli.initialized",
"Архив и workspace инициализированы.",
"Archive and workspace initialized.",
"cli.initialized", "Инициализация завершена.", "Initialized."
)
NO_RESULTS = Message("cli.no_results", "Ничего не найдено.", "Nothing found.")
NO_STATS_DATA = Message(
Expand All @@ -103,20 +99,16 @@ class Msg(Headers):
"cli.no_loaded_rolls", "Нет загруженных пленок.", "No loaded films."
)
STOCK_EMPTY = Message("cli.stock_empty", "Запас пуст.", "Stock is empty.")
STOCK_HEADER = Message("cli.stock_header", "Запас пленки", "Film stock")
STOCK_HEADER = Message("cli.stock_header", "Запас", "Stock")
STOCK_EMPTY_MANUAL = Message(
"cli.stock_empty_manual",
"Запас пуст. Используй --manual для ручного ввода.",
"Stock is empty. Use --manual for manual entry.",
)
ROLL_EDIT_HEADER = Message(
"cli.roll_edit_header", "Редактирование ролла", "Edit roll"
"Запас пуст. Используй --manual.",
"Stock is empty. Use --manual.",
)
ROLL_EDIT_SELECT = Message("cli.roll_edit_select", "Выбери ролл", "Select a roll")
ROLL_EDIT_HEADER = Message("cli.roll_edit_header", "Редактирование", "Editing")
ROLL_EDIT_SELECT = Message("cli.roll_edit_select", "Выберите ролл", "Select roll")
ROLL_EDIT_AVAILABLE = Message(
"cli.roll_edit_available",
"Доступные роллы:",
"Available rolls:",
"cli.roll_edit_available", "Доступные роллы:", "Available rolls:"
)
ROLL_EDIT_FILM = Message("cli.roll_edit_film", "Пленка", "Film")
ROLL_EDIT_CAMERA = Message("cli.roll_edit_camera", "Камера", "Camera")
Expand All @@ -129,28 +121,18 @@ class Msg(Headers):
"{path} | {film} | {camera} | {status}",
)
ROLL_EDIT_ORIGINAL_SOURCE = Message(
"cli.roll_edit_original_source",
"Исходник",
"Original source",
"cli.roll_edit_original_source", "Исходник", "Original source"
)
ROLL_EDIT_DIGITAL_COPY = Message(
"cli.roll_edit_digital_copy",
"Цифровая копия",
"Digital copy",
"cli.roll_edit_digital_copy", "Цифровая копия", "Digital copy"
)
ROLL_EDIT_ORIGINAL_STATUS = Message(
"cli.roll_edit_original_status",
"Состояние оригинала",
"Original status",
"cli.roll_edit_original_status", "Состояние оригинала", "Original status"
)
ROLL_EDIT_SELECT_HINT = Message(
"cli.roll_edit_select_hint",
"Выбери номер или нажми Enter, чтобы оставить текущее значение.",
"Choose a number or press Enter to keep the current value.",
)
ROLL_EDIT_UPDATED = Message(
"cli.roll_edit_updated", "Ролл обновлен.", "Roll updated."
"cli.roll_edit_select_hint", "Номер или Enter", "Number or Enter"
)
ROLL_EDIT_UPDATED = Message("cli.roll_edit_updated", "Обновлено.", "Updated.")
PROMPT_QUANTITY = Message("cli.prompt_quantity", "Количество:", "Quantity:")
PROMPT_FILM = Message("cli.prompt_film", "Пленка:", "Film:")
PROMPT_CAMERA = Message("cli.prompt_camera", "Камера:", "Camera:")
Expand All @@ -170,18 +152,16 @@ class Msg(Headers):
ROLL_EXISTS = Message(
"cli.roll_exists", "Roll уже существует:", "Roll already exists:"
)
CHOOSE_STOCK = Message(
"cli.choose_stock", "Выбери пленку из запаса.", "Choose a film from stock."
)
CHOOSE_STOCK = Message("cli.choose_stock", "Выберите пленку.", "Select film.")
SEARCH_QUERY_REQUIRED = Message(
"cli.search_query_required",
"Нужно указать строку поиска. Пример: rl search pizza",
"You need to provide a search query. Example: rl search pizza",
"Нужен запрос. Пример: rl search pizza",
"Query required. Example: rl search pizza",
)
SEARCH_NEEDS_QUERY_OR_FILTERS = Message(
"cli.search_needs_query_or_filters",
"Нужно указать строку поиска или хотя бы один фильтр.",
"You need to provide a search query or at least one filter.",
"Нужен запрос или фильтр.",
"Query or filter required.",
)
TAGS_NORMALIZED = Message(
"cli.tags_normalized", "Теги нормализованы.", "Tags normalized."
Expand All @@ -197,24 +177,18 @@ class Msg(Headers):
"Year {year} correct",
)
NORMALIZE_PHOTOS_YEAR = Message(
"cli.normalize_photos_year",
"Год для {folder}",
"Year for {folder}",
"cli.normalize_photos_year", "Год для {folder}", "Year for {folder}"
)
NORMALIZE_PHOTOS_MONTH = Message(
"cli.normalize_photos_month",
"Месяц для {folder} [01-12]",
"Month for {folder} [01-12]",
)
NORMALIZE_PHOTOS_MANUAL = Message(
"cli.normalize_photos_manual",
"Месяцы вручную?",
"Manual months?",
"cli.normalize_photos_manual", "Месяцы вручную?", "Manual months?"
)
NORMALIZE_PHOTOS_PREVIEW = Message(
"cli.normalize_photos_preview",
"План фото:",
"Photo plan:",
"cli.normalize_photos_preview", "План фото:", "Photo plan:"
)
NO_CHOICE = Message(
"cli.no_choice", "Не удалось выбрать roll.", "Could not select a roll."
Expand All @@ -236,54 +210,44 @@ class Msg(Headers):
BATCH_PROCESSED = Message("cli.batch_processed", "Обработано:", "Processed:")
BATCH_NEEDS_FILTERS = Message(
"cli.batch_needs_filters",
"Нужно указать хотя бы один фильтр и одно изменение.",
"You need at least one filter and one change.",
)
BATCH_FILTER_YEAR = Message(
"cli.batch_filter_year", "Фильтр по году.", "Filter by year."
"Нужен фильтр и изменение.",
"Filter and change required.",
)
BATCH_FILTER_YEAR = Message("cli.batch_filter_year", "Год.", "Year.")
BATCH_FILTER_FILM = Message(
"cli.batch_filter_film",
"Фильтр по пленкам через запятую.",
"Comma-separated film names.",
"Пленки через запятую.",
"Films, comma-separated.",
)
BATCH_FILTER_CAMERA = Message(
"cli.batch_filter_camera",
"Фильтр по камерам через запятую.",
"Comma-separated camera names.",
"Камеры через запятую.",
"Cameras, comma-separated.",
)
BATCH_FILTER_STATUS = Message(
"cli.batch_filter_status",
"Фильтр по статусам через запятую.",
"Comma-separated statuses.",
"Статусы через запятую.",
"Statuses, comma-separated.",
)
BATCH_SET_STATUS = Message(
"cli.batch_set_status",
"Установить статус у выбранных роллов.",
"Set the status on selected rolls.",
"cli.batch_set_status", "Статус для выбранных роллов.", "Set status."
)
BATCH_SET_CAMERA = Message(
"cli.batch_set_camera",
"Установить камеру у выбранных роллов.",
"Set the camera on selected rolls.",
"cli.batch_set_camera", "Камера для выбранных роллов.", "Set camera."
)
BATCH_ADD_FEATURE = Message(
"cli.batch_add_feature",
"Добавить особенности через запятую.",
"Comma-separated features to append.",
"Особенности через запятую.",
"Features, comma-separated.",
)
BATCH_ADD_TAG = Message(
"cli.batch_add_tag",
"Добавить теги через запятую.",
"Comma-separated tags to append.",
)
BATCH_TITLE = Message(
"cli.batch_title", "Массовое редактирование роллов", "Batch edit rolls"
"cli.batch_add_tag", "Теги через запятую.", "Tags, comma-separated."
)
BATCH_TITLE = Message("cli.batch_title", "Массовое редактирование", "Batch editing")
STATS_YEAR = Message("cli.stats_year", "Год:", "Year:")
STATS_ROLLS = Message("cli.stats_rolls", "Роллов:", "Rolls:")
STATS_FILMS = Message("cli.stats_films", "Пленок в статистике:", "Films in stats:")
STATS_TAGS = Message("cli.stats_tags", "Тегов в статистике:", "Tags in stats:")
STATS_FILMS = Message("cli.stats_films", "Пленок:", "Films:")
STATS_TAGS = Message("cli.stats_tags", "Тегов:", "Tags:")
STATS_BY_STATUS = Message("cli.stats_by_status", "По статусам", "By status")
STATS_BY_YEAR = Message("cli.stats_by_year", "По годам", "By year")
STATS_BY_FILM = Message("cli.stats_by_film", "По пленкам", "By film")
Expand Down Expand Up @@ -341,11 +305,9 @@ class Msg(Headers):
"Invalid roll.toml format:",
)
LANGUAGE = Message("cli.language", "Язык:", "Language:")
LANGUAGE_SET_TO = Message(
"cli.language_set_to", "Язык установлен:", "Language set to:"
)
LANGUAGE_SET_TO = Message("cli.language_set_to", "Язык:", "Language:")
ALLOWED_VALUES = Message(
"cli.allowed_values", "Допустимые значения: EN, RU.", "Allowed values: EN, RU."
"cli.allowed_values", "Допустимые: EN, RU.", "Allowed: EN, RU."
)

RUN_TO_INITIALIZE = Message(
Expand All @@ -355,8 +317,8 @@ class Msg(Headers):
)
UNINITIALIZED_MESSAGE = Message(
"cli.uninitialized_message",
"roll не инициализирован.\nЗапусти: rl init ~/your/archive/path",
"roll is not initialized.\nRun: rl init ~/your/archive/path",
"Архив не инициализирован.\nЗапусти: rl init ~/your/archive/path",
"Archive not initialized.\nRun: rl init ~/your/archive/path",
)
UNINITIALIZED_NOTICE = Message(
"cli.uninitialized_notice",
Expand Down
8 changes: 4 additions & 4 deletions src/roll/messages/doctor.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ class Doctor:
WARN_PREFIX = "WARN:"

# global config
NO_ARCHIVES = "No archives configured."
NO_ARCHIVES = "No archives."
GLOBAL_CONFIG_MISSING = "Missing global config:"
GLOBAL_CONFIG_INVALID = "Invalid global config:"
LANGUAGE_NOT_EXPLICIT = "Language not set explicitly; using EN."
Expand All @@ -22,7 +22,7 @@ class Doctor:
WORKSPACE_CONFIG_MISSING = "Missing workspace config:"
WORKSPACE_CONFIG_INVALID = "Invalid workspace config:"
WORKSPACE_CONFIG_MISMATCH = "Workspace config does not match archive:"
WORKSPACE_CONFIG_ARCHIVE_MISSING = "workspace config does not set archive."
WORKSPACE_CONFIG_ARCHIVE_MISSING = "Workspace config missing archive."
WORKSPACE_STOCK_MISSING = "Missing stock.toml:"
WORKSPACE_STOCK_INVALID = "Invalid stock.toml:"

Expand All @@ -35,14 +35,14 @@ class Doctor:
ROLL_MISSING = "Missing roll.toml:"
ROLL_UNREADABLE = "Invalid roll.toml:"
ROLL_LOADED_AT_MISMATCH = "loaded_at does not match folder name:"
REQUIRED_FIELD_MISSING = "Missing required field"
REQUIRED_FIELD_MISSING = "Missing required field:"

# roll content
FILM_NOT_IN_VOCAB = "Film not in vocabulary:"
CAMERA_NOT_IN_VOCAB = "Camera not in vocabulary:"
FEATURE_NOT_IN_VOCAB = "Feature not in vocabulary:"
KEYWORD_NOT_IN_VOCAB = "Keyword not in vocabulary:"
KEYWORD_NOT_NORMALIZED = "Keyword is not uppercase:"
KEYWORD_NOT_NORMALIZED = "Keyword not uppercase:"

# filesystem hygiene
UNINDEXED_FOLDERS = "Unindexed folders:"
Expand Down
12 changes: 4 additions & 8 deletions src/roll/messages/normalize.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,12 @@ class Normalize:
ALREADY_NORMALIZED = Message(
"normalize.already_normalized",
"Архив уже нормализован.",
"Archive is already normalized.",
"Archive already normalized.",
)
QUESTION = Message(
"normalize.question", "Переименовать {count} папок?", "Rename {count} folders?"
)
CONFLICTS_HEADER = Message(
"normalize.conflicts_header", "Обнаружены конфликты:", "Conflicts detected:"
)
CONFLICTS_HEADER = Message("normalize.conflicts_header", "Конфликты:", "Conflicts:")
TARGET_ALREADY_EXISTS = Message(
"normalize.target_already_exists",
"Целевая папка уже существует:",
Expand All @@ -22,12 +20,10 @@ class Normalize:
TARGET_COLLIDES_WITH_SOURCE = Message(
"normalize.target_collides_with_source",
"Цель совпадает с источником:",
"Target collides with source:",
"Target matches source:",
)
DUPLICATE_TARGET = Message(
"normalize.duplicate_target",
"Дублирующаяся цель:",
"Duplicate target:",
"normalize.duplicate_target", "Дублирующаяся цель:", "Duplicate target:"
)


Expand Down
Loading