Compare commits

..

6 Commits

Author SHA1 Message Date
dgtlmoon
430d2130b3 test tweak
Some checks failed
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Build distribution 📦 (push) Has been cancelled
ChangeDetection.io App Test / lint-code (push) Has been cancelled
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Test the built package works basically. (push) Has been cancelled
Publish Python 🐍distribution 📦 to PyPI and TestPyPI / Publish Python 🐍 distribution 📦 to PyPI (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-10 (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-11 (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-12 (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-13 (push) Has been cancelled
ChangeDetection.io App Test / test-application-3-14 (push) Has been cancelled
2026-04-11 07:30:09 +02:00
dgtlmoon
7e58fed0ab Merge branch 'master' into text-filter-extract-lines-containing-subtext 2026-04-11 07:22:35 +02:00
dgtlmoon
4be295b613 test tweak 2026-04-11 07:04:09 +02:00
dgtlmoon
fcba83724a Rebuilding api-spec docs 2026-04-11 04:57:22 +02:00
dgtlmoon
2a09f21722 update tests and api spec 2026-04-11 04:57:05 +02:00
dgtlmoon
ac9f220147 Text filters - New simpler filter "Extract lines containing text" 2026-04-11 04:21:54 +02:00
65 changed files with 443 additions and 5294 deletions

View File

@@ -2,7 +2,7 @@
# Read more https://github.com/dgtlmoon/changedetection.io/wiki
# Semver means never use .01, or 00. Should be .1.
__version__ = '0.54.10'
__version__ = '0.54.8'
from changedetectionio.strtobool import strtobool
from json.decoder import JSONDecodeError

View File

@@ -5,17 +5,16 @@ from wtforms import (
validators,
)
from wtforms.fields.simple import BooleanField
from flask_babel import lazy_gettext as _l
from changedetectionio.processors.restock_diff.forms import processor_settings_form as restock_settings_form
class group_restock_settings_form(restock_settings_form):
overrides_watch = BooleanField(_l('Activate for individual watches in this tag/group?'), default=False)
url_match_pattern = StringField(_l('Auto-apply to watches with URLs matching'),
render_kw={"placeholder": _l("e.g. *://example.com/* or github.com/myorg")})
tag_colour = StringField(_l('Tag colour'), default='')
overrides_watch = BooleanField('Activate for individual watches in this tag/group?', default=False)
url_match_pattern = StringField('Auto-apply to watches with URLs matching',
render_kw={"placeholder": "e.g. *://example.com/* or github.com/myorg"})
tag_colour = StringField('Tag colour', default='')
class SingleTag(Form):
name = StringField(_l('Tag name'), [validators.InputRequired()], render_kw={"placeholder": _l("Name")})
save_button = SubmitField(_l('Save'), render_kw={"class": "pure-button pure-button-primary"})
name = StringField('Tag name', [validators.InputRequired()], render_kw={"placeholder": "Name"})
save_button = SubmitField('Save', render_kw={"class": "pure-button pure-button-primary"})

View File

@@ -17,7 +17,6 @@
</script>
<script src="{{url_for('static_content', group='js', filename='global-settings.js')}}" defer></script>
<script src="{{url_for('static_content', group='js', filename='watch-settings.js')}}" defer></script>
<script src="{{url_for('static_content', group='js', filename='notifications.js')}}" defer></script>

View File

@@ -65,7 +65,7 @@ html[data-darkmode="true"] .watch-tag-list.tag-{{ class_name }} {
{% for uuid, tag in available_tags %}
<tr id="{{ uuid }}" class="{{ loop.cycle('pure-table-odd', 'pure-table-even') }}">
<td class="watch-controls">
<a class="link-mute state-{{'on' if tag.notification_muted else 'off'}}" href="{{url_for('tags.mute', uuid=tag.uuid)}}"><img src="{{url_for('static_content', group='images', filename='bell-off.svg')}}" alt="{{ _('Mute notifications') }}" title="{{ _('Mute notifications') }}" class="icon icon-mute" ></a>
<a class="link-mute state-{{'on' if tag.notification_muted else 'off'}}" href="{{url_for('tags.mute', uuid=tag.uuid)}}"><img src="{{url_for('static_content', group='images', filename='bell-off.svg')}}" alt="Mute notifications" title="Mute notifications" class="icon icon-mute" ></a>
</td>
<td>{{ "{:,}".format(tag_count[uuid]) if uuid in tag_count else 0 }}</td>
<td class="title-col inline"> <a href="{{url_for('watchlist.index', tag=uuid) }}" class="watch-tag-list tag-{{ tag.title|sanitize_tag_class }}">{{ tag.title }}</a></td>

View File

@@ -142,7 +142,7 @@ def construct_blueprint(datastore: ChangeDetectionStore, update_q, queuedWatchMe
for p in datastore.extra_browsers:
form.fetch_backend.choices.append(p)
form.fetch_backend.choices.append(("system", gettext('System settings default')))
form.fetch_backend.choices.append(("system", 'System settings default'))
# form.browser_steps[0] can be assumed that we 'goto url' first
@@ -150,7 +150,7 @@ def construct_blueprint(datastore: ChangeDetectionStore, update_q, queuedWatchMe
# @todo - Couldn't get setattr() etc dynamic addition working, so remove it instead
del form.proxy
else:
form.proxy.choices = [('', gettext('Default'))]
form.proxy.choices = [('', 'Default')]
for p in datastore.proxy_list:
form.proxy.choices.append(tuple((p, datastore.proxy_list[p]['label'])))
@@ -301,7 +301,7 @@ def construct_blueprint(datastore: ChangeDetectionStore, update_q, queuedWatchMe
'extra_classes': ' '.join(c),
'extra_notification_token_placeholder_info': datastore.get_unique_notification_token_placeholders_available(),
'extra_processor_config': form.extra_tab_content(),
'extra_title': f" - {gettext('Edit')} - {watch.label}",
'extra_title': f" - Edit - {watch.label}",
'form': form,
'has_default_notification_urls': True if len(datastore.data['settings']['application']['notification_urls']) else False,
'has_extra_headers_file': len(datastore.get_all_headers_in_textfile_for_watch(uuid=uuid)) > 0,

View File

@@ -107,7 +107,7 @@ def construct_blueprint(datastore: ChangeDetectionStore):
current_diff_url=watch['url'],
current_version=timestamp,
extra_stylesheets=extra_stylesheets,
extra_title=f" - {gettext('Diff')} - {watch.label} @ {timestamp}",
extra_title=f" - Diff - {watch.label} @ {timestamp}",
highlight_ignored_line_numbers=ignored_line_numbers,
highlight_triggered_line_numbers=triggered_line_numbers,
highlight_blocked_line_numbers=blocked_line_numbers,

View File

@@ -245,10 +245,10 @@ html[data-darkmode="true"] .watch-tag-list.tag-{{ class_name }} {
<td class="inline checkbox-uuid" ><div><input name="uuids" type="checkbox" value="{{ watch.uuid}} " > <span class="counter-i">{{ loop.index+pagination.skip }}</span></div></td>
<td class="inline watch-controls">
<div>
<a class="ajax-op state-off pause-toggle" data-op="pause" href="{{url_for('watchlist.index', op='pause', uuid=watch.uuid, tag=active_tag_uuid)}}"><img src="{{url_for('static_content', group='images', filename='pause.svg')}}" alt="{{ _('Pause checks') }}" title="{{ _('Pause checks') }}" class="icon icon-pause" ></a>
<a class="ajax-op state-on pause-toggle" data-op="pause" style="display: none" href="{{url_for('watchlist.index', op='pause', uuid=watch.uuid, tag=active_tag_uuid)}}"><img src="{{url_for('static_content', group='images', filename='play.svg')}}" alt="{{ _('UnPause checks') }}" title="{{ _('UnPause checks') }}" class="icon icon-unpause" ></a>
<a class="ajax-op state-off mute-toggle" data-op="mute" href="{{url_for('watchlist.index', op='mute', uuid=watch.uuid, tag=active_tag_uuid)}}"><img src="{{url_for('static_content', group='images', filename='bell-off.svg')}}" alt="{{ _('Mute notification') }}" title="{{ _('Mute notification') }}" class="icon icon-mute" ></a>
<a class="ajax-op state-on mute-toggle" data-op="mute" style="display: none" href="{{url_for('watchlist.index', op='mute', uuid=watch.uuid, tag=active_tag_uuid)}}"><img src="{{url_for('static_content', group='images', filename='bell-off.svg')}}" alt="{{ _('UnMute notification') }}" title="{{ _('UnMute notification') }}" class="icon icon-mute" ></a>
<a class="ajax-op state-off pause-toggle" data-op="pause" href="{{url_for('watchlist.index', op='pause', uuid=watch.uuid, tag=active_tag_uuid)}}"><img src="{{url_for('static_content', group='images', filename='pause.svg')}}" alt="Pause checks" title="Pause checks" class="icon icon-pause" ></a>
<a class="ajax-op state-on pause-toggle" data-op="pause" style="display: none" href="{{url_for('watchlist.index', op='pause', uuid=watch.uuid, tag=active_tag_uuid)}}"><img src="{{url_for('static_content', group='images', filename='play.svg')}}" alt="UnPause checks" title="UnPause checks" class="icon icon-unpause" ></a>
<a class="ajax-op state-off mute-toggle" data-op="mute" href="{{url_for('watchlist.index', op='mute', uuid=watch.uuid, tag=active_tag_uuid)}}"><img src="{{url_for('static_content', group='images', filename='bell-off.svg')}}" alt="Mute notification" title="Mute notification" class="icon icon-mute" ></a>
<a class="ajax-op state-on mute-toggle" data-op="mute" style="display: none" href="{{url_for('watchlist.index', op='mute', uuid=watch.uuid, tag=active_tag_uuid)}}"><img src="{{url_for('static_content', group='images', filename='bell-off.svg')}}" alt="UnMute notification" title="UnMute notification" class="icon icon-mute" ></a>
</div>
</td>
@@ -292,7 +292,7 @@ html[data-darkmode="true"] .watch-tag-list.tag-{{ class_name }} {
{%- endfor -%}
</div>
<div class="status-icons">
<a class="link-spread" href="{{url_for('ui.form_share_put_watch', uuid=watch.uuid)}}"><img src="{{url_for('static_content', group='images', filename='spread.svg')}}" class="status-icon icon icon-spread" title="{{ _('Create a link to share watch config with others') }}" ></a>
<a class="link-spread" href="{{url_for('ui.form_share_put_watch', uuid=watch.uuid)}}"><img src="{{url_for('static_content', group='images', filename='spread.svg')}}" class="status-icon icon icon-spread" title="Create a link to share watch config with others" ></a>
{%- set effective_fetcher = watch.get_fetch_backend if watch.get_fetch_backend != "system" else system_default_fetcher -%}
{%- if effective_fetcher and ("html_webdriver" in effective_fetcher or "html_" in effective_fetcher or "extra_browser_" in effective_fetcher) -%}
{{ effective_fetcher|fetcher_status_icons }}
@@ -335,13 +335,13 @@ html[data-darkmode="true"] .watch-tag-list.tag-{{ class_name }} {
</td>
{%- endif -%}
{#last_checked becomes fetch-start-time#}
<td class="last-checked" data-timestamp="{{ watch.last_checked }}" data-fetchduration={{ watch.fetch_time }} data-eta_complete="{{ watch.last_checked+watch.fetch_time }}" data-label="{{ _('Last Checked') }}">
<td class="last-checked" data-timestamp="{{ watch.last_checked }}" data-fetchduration={{ watch.fetch_time }} data-eta_complete="{{ watch.last_checked+watch.fetch_time }}" >
<div class="spinner-wrapper" style="display:none;" >
<span class="spinner"></span><span class="status-text">&nbsp;{{ _('Checking now') }}</span>
</div>
<span class="innertext">{{watch|format_last_checked_time|safe}}</span>
</td>
<td class="last-changed" data-timestamp="{{ watch.last_changed }}" data-label="{{ _('Last Changed') }}">{%- if watch.history_n >=2 and watch.last_changed >0 -%}
<td class="last-changed" data-timestamp="{{ watch.last_changed }}">{%- if watch.history_n >=2 and watch.last_changed >0 -%}
{{watch.last_changed|format_timestamp_timeago}}
{%- else -%}
{{ _('Not yet') }}

View File

@@ -1,5 +1,4 @@
from json_logic.builtins import BUILTINS
from flask_babel import lazy_gettext as _l
from .exceptions import EmptyConditionRuleRowNotUsable
from .pluggy_interface import plugin_manager # Import the pluggy plugin manager
@@ -7,19 +6,19 @@ from . import default_plugin
from loguru import logger
# List of all supported JSON Logic operators
operator_choices = [
(None, _l("Choose one - Operator")),
(">", _l("Greater Than")),
("<", _l("Less Than")),
(">=", _l("Greater Than or Equal To")),
("<=", _l("Less Than or Equal To")),
("==", _l("Equals")),
("!=", _l("Not Equals")),
("in", _l("Contains")),
(None, "Choose one - Operator"),
(">", "Greater Than"),
("<", "Less Than"),
(">=", "Greater Than or Equal To"),
("<=", "Less Than or Equal To"),
("==", "Equals"),
("!=", "Not Equals"),
("in", "Contains"),
]
# Fields available in the rules
field_choices = [
(None, _l("Choose one - Field")),
(None, "Choose one - Field"),
]
# The data we will feed the JSON Rules to see if it passes the test/conditions or not

View File

@@ -3,7 +3,6 @@ import re
import pluggy
from price_parser import Price
from loguru import logger
from flask_babel import lazy_gettext as _l
hookimpl = pluggy.HookimplMarker("changedetectionio_conditions")
@@ -48,22 +47,22 @@ def register_operators():
@hookimpl
def register_operator_choices():
return [
("!in", _l("Does NOT Contain")),
("starts_with", _l("Text Starts With")),
("ends_with", _l("Text Ends With")),
("length_min", _l("Length minimum")),
("length_max", _l("Length maximum")),
("contains_regex", _l("Text Matches Regex")),
("!contains_regex", _l("Text Does NOT Match Regex")),
("!in", "Does NOT Contain"),
("starts_with", "Text Starts With"),
("ends_with", "Text Ends With"),
("length_min", "Length minimum"),
("length_max", "Length maximum"),
("contains_regex", "Text Matches Regex"),
("!contains_regex", "Text Does NOT Match Regex"),
]
@hookimpl
def register_field_choices():
return [
("extracted_number", _l("Extracted number after 'Filters & Triggers'")),
("extracted_number", "Extracted number after 'Filters & Triggers'"),
# ("meta_description", "Meta Description"),
# ("meta_keywords", "Meta Keywords"),
("page_filtered_text", _l("Page text after 'Filters & Triggers'")),
("page_filtered_text", "Page text after 'Filters & Triggers'"),
#("page_title", "Page <title>"), # actual page title <title>
]

View File

@@ -1,7 +1,6 @@
# Condition Rule Form (for each rule row)
from wtforms import Form, SelectField, StringField, validators
from wtforms import validators
from flask_babel import lazy_gettext as _l
class ConditionFormRow(Form):
@@ -9,18 +8,18 @@ class ConditionFormRow(Form):
from changedetectionio.conditions import plugin_manager
from changedetectionio.conditions import operator_choices, field_choices
field = SelectField(
_l("Field"),
"Field",
choices=field_choices,
validators=[validators.Optional()]
)
operator = SelectField(
_l("Operator"),
"Operator",
choices=operator_choices,
validators=[validators.Optional()]
)
value = StringField(_l("Value"), validators=[validators.Optional()], render_kw={"placeholder": _l("A value")})
value = StringField("Value", validators=[validators.Optional()], render_kw={"placeholder": "A value"})
def validate(self, extra_validators=None):
# First, run the default validators
@@ -31,15 +30,15 @@ class ConditionFormRow(Form):
# If any of the operator/field/value is set, then they must be all set
if any(value not in ("", False, "None", None) for value in [self.operator.data, self.field.data, self.value.data]):
if not self.operator.data or self.operator.data == 'None':
self.operator.errors.append(_l("Operator is required."))
self.operator.errors.append("Operator is required.")
return False
if not self.field.data or self.field.data == 'None':
self.field.errors.append(_l("Field is required."))
self.field.errors.append("Field is required.")
return False
if not self.value.data:
self.value.errors.append(_l("Value is required."))
self.value.errors.append("Value is required.")
return False
return True # Only return True if all conditions pass

View File

@@ -4,7 +4,6 @@ Provides metrics for measuring text similarity between snapshots.
"""
import pluggy
from loguru import logger
from flask_babel import gettext as _, lazy_gettext as _l
LEVENSHTEIN_MAX_LEN_FOR_EDIT_STATS=100000
@@ -54,8 +53,8 @@ def register_operator_choices():
@conditions_hookimpl
def register_field_choices():
return [
("levenshtein_ratio", _l("Levenshtein - Text similarity ratio")),
("levenshtein_distance", _l("Levenshtein - Text change distance")),
("levenshtein_ratio", "Levenshtein - Text similarity ratio"),
("levenshtein_distance", "Levenshtein - Text change distance"),
]
@conditions_hookimpl
@@ -78,7 +77,7 @@ def ui_edit_stats_extras(watch):
"""Add Levenshtein stats to the UI using the global plugin system"""
"""Generate the HTML for Levenshtein stats - shared by both plugin systems"""
if len(watch.history.keys()) < 2:
return f"<p>{_('Not enough history to calculate Levenshtein metrics')}</p>"
return "<p>Not enough history to calculate Levenshtein metrics</p>"
# Protection against the algorithm getting stuck on huge documents
@@ -88,37 +87,37 @@ def ui_edit_stats_extras(watch):
for idx in (-1, -2)
if len(k) >= abs(idx)
):
return f"<p>{_('Snapshot too large for edit statistics, skipping.')}</p>"
return "<p>Snapshot too large for edit statistics, skipping.</p>"
try:
lev_data = levenshtein_ratio_recent_history(watch)
if not lev_data or not isinstance(lev_data, dict):
return f"<p>{_('Unable to calculate Levenshtein metrics')}</p>"
return "<p>Unable to calculate Levenshtein metrics</p>"
html = f"""
<div class="levenshtein-stats">
<h4>{_('Levenshtein Text Similarity Details')}</h4>
<h4>Levenshtein Text Similarity Details</h4>
<table class="pure-table">
<tbody>
<tr>
<td>{_('Raw distance (edits needed)')}</td>
<td>Raw distance (edits needed)</td>
<td>{lev_data['distance']}</td>
</tr>
<tr>
<td>{_('Similarity ratio')}</td>
<td>Similarity ratio</td>
<td>{lev_data['ratio']:.4f}</td>
</tr>
<tr>
<td>{_('Percent similar')}</td>
<td>Percent similar</td>
<td>{lev_data['percent_similar']}%</td>
</tr>
</tbody>
</table>
<p style="font-size: 80%;">{_('Levenshtein metrics compare the last two snapshots, measuring how many character edits are needed to transform one into the other.')}</p>
<p style="font-size: 80%;">Levenshtein metrics compare the last two snapshots, measuring how many character edits are needed to transform one into the other.</p>
</div>
"""
return html
except Exception as e:
logger.error(f"Error generating Levenshtein UI extras: {str(e)}")
return f"<p>{_('Error calculating Levenshtein metrics')}</p>"
return "<p>Error calculating Levenshtein metrics</p>"

View File

@@ -4,7 +4,6 @@ Provides word count metrics for snapshot content.
"""
import pluggy
from loguru import logger
from flask_babel import gettext as _, lazy_gettext as _l
# Support both plugin systems
conditions_hookimpl = pluggy.HookimplMarker("changedetectionio_conditions")
@@ -41,7 +40,7 @@ def register_operator_choices():
def register_field_choices():
# Add a field that will be available in conditions
return [
("word_count", _l("Word count of content")),
("word_count", "Word count of content"),
]
@conditions_hookimpl
@@ -62,16 +61,16 @@ def _generate_stats_html(watch):
html = f"""
<div class="word-count-stats">
<h4>{_('Content Analysis')}</h4>
<h4>Content Analysis</h4>
<table class="pure-table">
<tbody>
<tr>
<td>{_('Word count (latest snapshot)')}</td>
<td>Word count (latest snapshot)</td>
<td>{word_count}</td>
</tr>
</tbody>
</table>
<p style="font-size: 80%;">{_('Word count is a simple measure of content length, calculated by splitting text on whitespace.')}</p>
<p style="font-size: 80%;">Word count is a simple measure of content length, calculated by splitting text on whitespace.</p>
</div>
"""
return html

View File

@@ -1,4 +1,3 @@
from flask_babel import lazy_gettext as _l
from loguru import logger
from urllib.parse import urljoin, urlparse
import hashlib
@@ -14,7 +13,7 @@ from changedetectionio.validate_url import is_private_hostname
# "html_requests" is listed as the default fetcher in store.py!
class fetcher(Fetcher):
fetcher_description = _l("Basic fast Plaintext/HTTP Client")
fetcher_description = "Basic fast Plaintext/HTTP Client"
def __init__(self, proxy_override=None, custom_browser_connection_url=None, **kwargs):
super().__init__(**kwargs)

View File

@@ -38,39 +38,26 @@
if (a.size !== b.size) {
return b.size - a.size;
}
// Second priority: apple-touch-icon over regular icon
const isAppleA = /apple-touch-icon/.test(a.rel);
const isAppleB = /apple-touch-icon/.test(b.rel);
if (isAppleA && !isAppleB) return -1;
if (!isAppleA && isAppleB) return 1;
// Third priority: icons with no size attribute (fallback icons) last
const hasNoSizeA = !a.hasSizes;
const hasNoSizeB = !b.hasSizes;
if (hasNoSizeA && !hasNoSizeB) return 1;
if (!hasNoSizeA && hasNoSizeB) return -1;
return 0;
});
const timeoutMs = 2000;
// 1 MB — matches the server-side limit in bump_favicon()
const MAX_BYTES = 1 * 1024 * 1024;
for (const icon of icons) {
try {
// Inline data URI — no network fetch needed, data is already here
if (icon.href.startsWith('data:')) {
const match = icon.href.match(/^data:([^;]+);base64,([A-Za-z0-9+/=]+)$/);
if (!match) continue;
const mime_type = match[1];
const base64 = match[2];
// Rough size check: base64 is ~4/3 the binary size
if (base64.length * 0.75 > MAX_BYTES) continue;
return { url: icon.href, mime_type, base64 };
}
const controller = new AbortController();
const timeout = setTimeout(() => controller.abort(), timeoutMs);
@@ -87,15 +74,12 @@
const blob = await resp.blob();
if (blob.size > MAX_BYTES) continue;
// Convert blob to base64
const reader = new FileReader();
return await new Promise(resolve => {
reader.onloadend = () => {
resolve({
url: icon.href,
mime_type: blob.type,
base64: reader.result.split(",")[1]
});
};
@@ -114,3 +98,4 @@
// Auto-execute and return result for page.evaluate()
return await window.getFaviconAsBlob();
})();

View File

@@ -64,7 +64,7 @@ def extract_changed_from(raw_diff: str) -> str:
Useful for {{diff_changed_from}} — gives just the old value (e.g. old price),
not the full surrounding line. Multiple fragments joined with newlines.
"""
return '\n'.join(next((g for g in m.groups() if g is not None), '') for m in _EXTRACT_REMOVED_RE.finditer(raw_diff))
return '\n'.join(m.group(1) or m.group(2) for m in _EXTRACT_REMOVED_RE.finditer(raw_diff))
def extract_changed_to(raw_diff: str) -> str:
@@ -73,7 +73,7 @@ def extract_changed_to(raw_diff: str) -> str:
Useful for {{diff_changed_to}} — gives just the new value (e.g. new price),
not the full surrounding line. Multiple fragments joined with newlines.
"""
return '\n'.join(next((g for g in m.groups() if g is not None), '') for m in _EXTRACT_ADDED_RE.finditer(raw_diff))
return '\n'.join(m.group(1) or m.group(2) for m in _EXTRACT_ADDED_RE.finditer(raw_diff))
def render_inline_word_diff(before_line: str, after_line: str, ignore_junk: bool = False, markdown_style: str = None, tokenizer: str = 'words_and_html', include_change_type_prefix: bool = True) -> tuple[str, bool]:
@@ -457,8 +457,8 @@ def render_diff(
Returns:
str: Rendered difference
"""
newest_lines = [line.rstrip() for line in (newest_version_file_contents or '').splitlines()]
previous_lines = [line.rstrip() for line in (previous_version_file_contents or '').splitlines()]
newest_lines = [line.rstrip() for line in newest_version_file_contents.splitlines()]
previous_lines = [line.rstrip() for line in previous_version_file_contents.splitlines()] if previous_version_file_contents else []
now = time.time()
logger.debug(
f"diff options: "

View File

@@ -771,16 +771,16 @@ class SingleBrowserStep(Form):
operation = SelectField(_l('Operation'), [validators.Optional()], choices=browser_step_ui_config.keys())
# maybe better to set some <script>var..
selector = StringField(_l('Selector'), [validators.Optional()], render_kw={"placeholder": _l("CSS or xPath selector")})
optional_value = StringField(_l('value'), [validators.Optional()], render_kw={"placeholder": _l("Value")})
selector = StringField(_l('Selector'), [validators.Optional()], render_kw={"placeholder": "CSS or xPath selector"})
optional_value = StringField(_l('value'), [validators.Optional()], render_kw={"placeholder": "Value"})
# @todo move to JS? ajax fetch new field?
# remove_button = SubmitField(_l('-'), render_kw={"type": "button", "class": "pure-button pure-button-primary", 'title': 'Remove'})
# add_button = SubmitField(_l('+'), render_kw={"type": "button", "class": "pure-button pure-button-primary", 'title': 'Add new step after'})
class processor_text_json_diff_form(commonSettingsForm):
url = StringField(_l('Web Page URL'), validators=[validateURL()])
tags = StringTagUUID(_l('Group Tag'), [validators.Optional()], default='')
url = StringField('Web Page URL', validators=[validateURL()])
tags = StringTagUUID('Group Tag', [validators.Optional()], default='')
time_between_check = EnhancedFormField(
TimeBetweenCheckForm,
@@ -918,7 +918,7 @@ class processor_text_json_diff_form(commonSettingsForm):
class SingleExtraProxy(Form):
# maybe better to set some <script>var..
proxy_name = StringField(_l('Name'), [validators.Optional()], render_kw={"placeholder": _l("Name")})
proxy_name = StringField(_l('Name'), [validators.Optional()], render_kw={"placeholder": "Name"})
proxy_url = StringField(_l('Proxy URL'), [
validators.Optional(),
ValidateStartsWithRegex(
@@ -930,7 +930,7 @@ class SingleExtraProxy(Form):
], render_kw={"placeholder": "socks5:// or regular proxy http://user:pass@...:3128", "size":50})
class SingleExtraBrowser(Form):
browser_name = StringField(_l('Name'), [validators.Optional()], render_kw={"placeholder": _l("Name")})
browser_name = StringField(_l('Name'), [validators.Optional()], render_kw={"placeholder": "Name"})
browser_connection_url = StringField(_l('Browser connection URL'), [
validators.Optional(),
ValidateStartsWithRegex(
@@ -999,7 +999,7 @@ class globalSettingsApplicationForm(commonSettingsForm):
# Screenshot comparison settings
min_change_percentage = FloatField(
_l('Screenshot: Minimum Change Percentage'),
'Screenshot: Minimum Change Percentage',
validators=[
validators.Optional(),
validators.NumberRange(min=0.0, max=100.0, message=_l('Must be between 0 and 100'))

View File

@@ -798,50 +798,24 @@ class model(EntityPersistenceMixin, watch_base):
# Also in the case that the file didnt exist
return True
def bump_favicon(self, url, favicon_base_64: str, mime_type: str = None) -> None:
def bump_favicon(self, url, favicon_base_64: str) -> None:
from urllib.parse import urlparse
import base64
import binascii
import re
decoded = None
MAX_FAVICON_BYTES = 1 * 1024 * 1024 # 1 MB
MIME_TO_EXT = {
'image/png': 'png',
'image/x-icon': 'ico',
'image/vnd.microsoft.icon': 'ico',
'image/jpeg': 'jpg',
'image/gif': 'gif',
'image/svg+xml': 'svg',
'image/webp': 'webp',
'image/bmp': 'bmp',
}
extension = None
# If the caller already resolved the MIME type (e.g. from blob.type or a data URI),
# use that directly — it's more reliable than guessing from a URL path.
if mime_type:
extension = MIME_TO_EXT.get(mime_type.lower().split(';')[0].strip(), None)
# Fall back to extracting extension from URL path, unless it's a data URI.
if not extension and url and not url.startswith('data:'):
if url:
try:
parsed = urlparse(url)
filename = os.path.basename(parsed.path)
(_base, ext) = filename.lower().strip().rsplit('.', 1)
extension = ext
(base, extension) = filename.lower().strip().rsplit('.', 1)
except ValueError:
logger.warning(f"UUID: {self.get('uuid')} Cant work out file extension from '{url}', defaulting to ico")
# Handle data URIs: extract MIME type from the URI itself when not already known
if not extension and url and url.startswith('data:'):
m = re.match(r'^data:([^;]+);base64,', url)
if m:
extension = MIME_TO_EXT.get(m.group(1).lower(), None)
if not extension:
extension = 'ico'
logger.error(f"UUID: {self.get('uuid')} Cant work out file extension from '{url}'")
return None
else:
# Assume favicon.ico
base = "favicon"
extension = "ico"
fname = os.path.join(self.data_dir, f"favicon.{extension}")
@@ -850,27 +824,22 @@ class model(EntityPersistenceMixin, watch_base):
decoded = base64.b64decode(favicon_base_64, validate=True)
except (binascii.Error, ValueError) as e:
logger.warning(f"UUID: {self.get('uuid')} FavIcon save data (Base64) corrupt? {str(e)}")
return None
else:
if decoded:
try:
with open(fname, 'wb') as f:
f.write(decoded)
if len(decoded) > MAX_FAVICON_BYTES:
logger.warning(f"UUID: {self.get('uuid')} Favicon too large ({len(decoded)} bytes), skipping")
return None
# Invalidate module-level favicon filename cache for this watch
_FAVICON_FILENAME_CACHE.pop(self.data_dir, None)
try:
with open(fname, 'wb') as f:
f.write(decoded)
# A signal that could trigger the socket server to update the browser also
watch_check_update = signal('watch_favicon_bump')
if watch_check_update:
watch_check_update.send(watch_uuid=self.get('uuid'))
# Invalidate module-level favicon filename cache for this watch
_FAVICON_FILENAME_CACHE.pop(self.data_dir, None)
# A signal that could trigger the socket server to update the browser also
watch_check_update = signal('watch_favicon_bump')
if watch_check_update:
watch_check_update.send(watch_uuid=self.get('uuid'))
except Exception as e:
logger.warning(f"UUID: {self.get('uuid')} error saving FavIcon to {fname} - {str(e)}")
return None
except Exception as e:
logger.warning(f"UUID: {self.get('uuid')} error saving FavIcon to {fname} - {str(e)}")
# @todo - Store some checksum and only write when its different
logger.debug(f"UUID: {self.get('uuid')} updated favicon to at {fname}")

View File

@@ -338,7 +338,6 @@ class watch_base(dict):
# These are set by processors/workers and should not trigger edited flag
additional_system_fields = {
'last_check_status', # Set by processors
'last_filter_config_hash', # Set by text_json_diff processor, internal skip-cache
'restock', # Set by restock processor
'last_viewed', # Set by mark_all_viewed endpoint
}

View File

@@ -259,12 +259,9 @@ def apply_service_tweaks(url, n_body, n_title, requested_output_format):
elif (url.startswith('discord://') or url.startswith('https://discordapp.com/api/webhooks')
or url.startswith('https://discord.com/api'))\
and 'html' in requested_output_format:
# Discord doesn't render HTML — convert markup to plain text equivalents.
# &nbsp; is injected upstream to preserve double-spaces for HTML email clients;
# Discord displays it as the literal string "&nbsp;" so strip it here.
# Discord doesn't support HTML, replace <br> with newlines
n_body = n_body.strip().replace('<br>', '\n')
n_body = n_body.replace('</br>', '\n')
n_body = n_body.replace('&nbsp;', ' ')
n_body = newline_re.sub('\n', n_body)
# Don't replace placeholders or truncate here - let the custom Discord plugin handle it

View File

@@ -102,8 +102,7 @@ class FormattableExtract(str):
def __new__(cls, prev_snapshot, current_snapshot, extract_fn):
if prev_snapshot or current_snapshot:
from changedetectionio import diff as diff_module
# word_diff=True is required — placemarker extraction regexes only exist in word-diff output
raw = diff_module.render_diff(prev_snapshot or '', current_snapshot or '', word_diff=True)
raw = diff_module.render_diff(prev_snapshot, current_snapshot, word_diff=True)
extracted = extract_fn(raw)
else:
extracted = ''

View File

@@ -97,6 +97,7 @@ class difference_detection_processor():
logger.warning(f"Failed to read checksum file for {self.watch_uuid}: {e}")
self.last_raw_content_checksum = None
async def validate_iana_url(self):
"""Pre-flight SSRF check — runs DNS lookup in executor to avoid blocking the event loop.
Covers all fetchers (requests, playwright, puppeteer, plugins) since every fetch goes

View File

@@ -61,7 +61,7 @@ def render_form(watch, datastore, request, url_for, render_template, flash, redi
screenshot=screenshot_url,
is_html_webdriver=is_html_webdriver,
password_enabled_and_share_is_off=password_enabled_and_share_is_off,
extra_title=f" - {watch.label} - {gettext('Extract Data')}",
extra_title=f" - {watch.label} - Extract Data",
extra_stylesheets=[url_for('static_content', group='styles', filename='diff.css')],
pure_menu_fixed=False
)

View File

@@ -3,11 +3,11 @@
{% block content %}
<div class="tabs">
<ul>
{% if last_error_text %}<li class="tab" id="error-text-tab"><a href="{{ url_for('ui.ui_diff.diff_history_page', uuid=uuid)}}#error-text">{{ _('Error Text') }}</a></li> {% endif %}
{% if last_error_screenshot %}<li class="tab" id="error-screenshot-tab"><a href="{{ url_for('ui.ui_diff.diff_history_page', uuid=uuid)}}#error-screenshot">{{ _('Error Screenshot') }}</a></li> {% endif %}
<li class="tab" id=""><a href="{{ url_for('ui.ui_diff.diff_history_page', uuid=uuid)}}#text">{{ _('Text') }}</a></li>
<li class="tab" id="screenshot-tab"><a href="{{ url_for('ui.ui_diff.diff_history_page', uuid=uuid)}}#screenshot">{{ _('Screenshot') }}</a></li>
<li class="tab active" id="extract-tab"><a href="{{ url_for('ui.ui_diff.diff_history_page_extract_GET', uuid=uuid)}}">{{ _('Extract Data') }}</a></li>
{% if last_error_text %}<li class="tab" id="error-text-tab"><a href="{{ url_for('ui.ui_diff.diff_history_page', uuid=uuid)}}#error-text">Error Text</a></li> {% endif %}
{% if last_error_screenshot %}<li class="tab" id="error-screenshot-tab"><a href="{{ url_for('ui.ui_diff.diff_history_page', uuid=uuid)}}#error-screenshot">Error Screenshot</a></li> {% endif %}
<li class="tab" id=""><a href="{{ url_for('ui.ui_diff.diff_history_page', uuid=uuid)}}#text">Text</a></li>
<li class="tab" id="screenshot-tab"><a href="{{ url_for('ui.ui_diff.diff_history_page', uuid=uuid)}}#screenshot">Screenshot</a></li>
<li class="tab active" id="extract-tab"><a href="{{ url_for('ui.ui_diff.diff_history_page_extract_GET', uuid=uuid)}}">Extract Data</a></li>
</ul>
</div>
@@ -17,23 +17,23 @@
<form id="extract-data-form" class="pure-form pure-form-stacked edit-form" action="{{ url_for('ui.ui_diff.diff_history_page_extract_POST', uuid=uuid) }}" method="POST">
<input type="hidden" name="csrf_token" value="{{ csrf_token() }}">
<p>{{ _('This tool will extract text data from all of the watch history.') }}</p>
<p>This tool will extract text data from all of the watch history.</p>
<div class="pure-control-group">
{{ render_field(extract_form.extract_regex) }}
<span class="pure-form-message-inline">
{{ _('A <strong>RegEx</strong> is a pattern that identifies exactly which part inside of the text that you want to extract.')|safe }}<br>
A <strong>RegEx</strong> is a pattern that identifies exactly which part inside of the text that you want to extract.<br>
<p>
{{ _('For example, to extract only the numbers from text') }} &dash;<br>
<strong>{{ _('Raw text') }}</strong>: <code>Temperature <span style="color: red">5.5</span>°C in Sydney</code><br>
<strong>{{ _('RegEx to extract:') }}</strong> <code>Temperature <span style="color: red">([0-9\.]+)</span></code><br>
For example, to extract only the numbers from text &dash;<br>
<strong>Raw text</strong>: <code>Temperature <span style="color: red">5.5</span>°C in Sydney</code><br>
<strong>RegEx to extract:</strong> <code>Temperature <span style="color: red">([0-9\.]+)</span></code><br>
</p>
<p>
<a href="https://RegExr.com/">{{ _('Be sure to test your RegEx here.') }}</a>
<a href="https://RegExr.com/">Be sure to test your RegEx here.</a>
</p>
<p>
{{ _('Each RegEx group bracket') }} <code>()</code> {{ _('will be in its own column, the first column value is always the date.') }}
Each RegEx group bracket <code>()</code> will be in its own column, the first column value is always the date.
</p>
</span>
</div>

View File

@@ -7,7 +7,6 @@ a side-by-side or unified diff view with syntax highlighting and change markers.
import os
import time
from flask_babel import gettext
from loguru import logger
from changedetectionio import diff, strtobool
@@ -208,7 +207,7 @@ def render(watch, datastore, request, url_for, render_template, flash, redirect,
diff_prefs=diff_prefs,
extra_classes='difference-page',
extra_stylesheets=extra_stylesheets,
extra_title=f" - {watch.label} - {gettext('History')}",
extra_title=f" - {watch.label} - History",
extract_form=extract_form,
from_version=str(from_version),
is_html_webdriver=is_html_webdriver,

View File

@@ -105,30 +105,6 @@ class FilterConfig:
def text_should_not_be_present(self):
return self._get_merged_rules('text_should_not_be_present')
def get_filter_config_hash(self):
"""
Stable hash of the effective filter configuration.
Used by the skip-logic in run_changedetection() so that any change to
global settings, tag overrides, or watch filters automatically invalidates
the raw-content-unchanged shortcut — without needing scattered
clear_all_last_checksums() calls at every settings mutation site.
"""
app = self.datastore.data['settings']['application']
config = {
'extract_lines_containing': sorted(self.extract_lines_containing),
'extract_text': sorted(self.extract_text),
'ignore_text': sorted(self.ignore_text),
'include_filters': sorted(self.include_filters),
'subtractive_selectors': sorted(self.subtractive_selectors),
'text_should_not_be_present': sorted(self.text_should_not_be_present),
'trigger_text': sorted(self.trigger_text),
# Global processing flags not captured by the filter lists above
'ignore_whitespace': app.get('ignore_whitespace', False),
'strip_ignored_lines': app.get('strip_ignored_lines', False),
}
return hashlib.md5(json.dumps(config, sort_keys=True).encode()).hexdigest()
@property
def has_include_filters(self):
return bool(self.include_filters) and bool(self.include_filters[0].strip())
@@ -416,26 +392,19 @@ class perform_site_check(difference_detection_processor):
raise Exception("Watch no longer exists.")
current_raw_document_checksum = self.get_raw_document_checksum()
# Build filter config up front so we can hash it for the skip check.
filter_config = FilterConfig(watch, self.datastore)
current_filter_config_hash = filter_config.get_filter_config_hash()
# Skip only when ALL of these hold:
# 1. raw HTML is unchanged
# 2. watch config was not edited (was_edited covers per-watch field changes)
# 3. effective filter config is unchanged (covers global/tag setting changes that
# bypass was_edited — e.g. global_ignore_text, global_subtractive_selectors)
# last_filter_config_hash being False means first run or upgrade: don't skip.
# Skip processing only if BOTH conditions are true:
# 1. HTML content unchanged (checksum matches last saved checksum)
# 2. Watch configuration was not edited (including trigger_text, filters, etc.)
# The was_edited flag handles all watch configuration changes, so we don't need
# separate checks for trigger_text or other processing rules.
if (not force_reprocess and
not watch.was_edited and
self.last_raw_content_checksum and
self.last_raw_content_checksum == current_raw_document_checksum and
watch.get('last_filter_config_hash') and
watch.get('last_filter_config_hash') == current_filter_config_hash):
self.last_raw_content_checksum == current_raw_document_checksum):
raise checksumFromPreviousCheckWasTheSame()
# Initialize remaining components
# Initialize components
filter_config = FilterConfig(watch, self.datastore)
content_processor = ContentProcessor(self.fetcher, watch, filter_config, self.datastore)
transformer = ContentTransformer()
rule_engine = RuleEngine()
@@ -456,7 +425,6 @@ class perform_site_check(difference_detection_processor):
# Save the raw content checksum to file (processor implementation detail, not watch config)
self.update_last_raw_content_checksum(current_raw_document_checksum)
update_obj['last_filter_config_hash'] = current_filter_config_hash
# === CONTENT PREPROCESSING ===
# Avoid creating unnecessary intermediate string copies by reassigning only when needed
@@ -587,8 +555,8 @@ class perform_site_check(difference_detection_processor):
# === BLOCKING RULES EVALUATION ===
blocked = False
# Check trigger_text - use text_for_checksuming so ignore_text can suppress trigger_text
if rule_engine.evaluate_trigger_text(text_for_checksuming, filter_config.trigger_text):
# Check trigger_text
if rule_engine.evaluate_trigger_text(stripped_text, filter_config.trigger_text):
blocked = True
# Check text_should_not_be_present

View File

@@ -1,20 +1,5 @@
function checkDiscordHtmlWarning() {
var urls = $('textarea.notification-urls').val() || '';
var format = $('select.notification-format').val() || '';
var isDiscord = /discord:\/\/|https:\/\/discord(?:app)?\.com\/api/i.test(urls);
var isHtml = format === 'html' || format === 'htmlcolor';
if (isDiscord && isHtml) {
$('#discord-html-format-warning').show();
} else {
$('#discord-html-format-warning').hide();
}
}
$(document).ready(function () {
$('textarea.notification-urls, select.notification-format').on('change input', checkDiscordHtmlWarning);
checkDiscordHtmlWarning();
$('#add-email-helper').click(function (e) {
e.preventDefault();
email = prompt("Destination email");

View File

@@ -47,12 +47,12 @@ $grid-gap: 0.5rem;
.last-checked::before {
color: var(--color-text);
content: attr(data-label) " ";
content: "Last Checked ";
}
.last-changed::before {
color: var(--color-text);
content: attr(data-label) " ";
content: "Last Changed ";
}
/* Force table to not be like tables anymore */

File diff suppressed because one or more lines are too long

View File

@@ -195,10 +195,6 @@
<div class="">
{{ render_field(form.notification_format , class="notification-format") }}
<span class="pure-form-message-inline">{{ _('Format for all notifications') }}</span>
<div id="discord-html-format-warning" class="inline-warning" style="display: none; margin-top: 6px;">
<img class="inline-warning-icon" src="{{url_for('static_content', group='images', filename='notice.svg')}}" alt="{{ _('Note') }}" title="{{ _('Note') }}">
{{ _('Discord does not render HTML — switch to') }} <strong>{{ _('Plain Text') }}</strong> {{ _('format to avoid') }} <code>&amp;nbsp;</code> {{ _('and other HTML entities appearing literally in your notifications.') }}
</div>
</div>
</div>
{% endmacro %}

View File

@@ -69,7 +69,7 @@
{% else %}
{% if new_version_available and not(has_password and not current_user.is_authenticated) %}
<span id="new-version-text" class="pure-menu-heading">
<a href="https://changedetection.io">{{ _('A new version is available') }}</a>
<a href="https://changedetection.io">A new version is available</a>
</span>
{% endif %}
{% endif %}
@@ -235,7 +235,7 @@
{% if session['share-link'] %}
<ul class="messages with-share-link">
<li class="message">
{{ _('Share this link:') }}
Share this link:
<span id="share-link">{{ session['share-link'] }}</span>
<img style="height: 1em; display: inline-block" src="{{url_for('static_content', group='images', filename='copy.svg')}}" >
</li>

View File

@@ -10,7 +10,7 @@ xpath://body/div/span[contains(@class, 'example-class')]",
<span class="pure-form-message-inline"><strong>Note!: //text() function does not work where the &lt;element&gt; contains &lt;![CDATA[]]&gt;</strong></span><br>
{% endif %}
<span class="pure-form-message-inline">One CSS, xPath 1 &amp; 2, JSON Path/JQ selector per line, <i>any</i> rules that matches will be used.<br>
<span data-target="#advanced-help-selectors" class="toggle-show pure-button button-tag button-xsmall">{{ _('Show advanced help and tips') }}</span><br>
<span data-target="#advanced-help-selectors" class="toggle-show pure-button button-tag button-xsmall">Show advanced help and tips</span><br>
<ul id="advanced-help-selectors" style="display: none;">
<li>CSS - Limit text to this CSS rule, only text matching this CSS rule is included.</li>
<li>JSON - Limit text to this JSON rule, using either <a href="https://pypi.org/project/jsonpath-ng/" target="new">JSONPath</a> or <a href="https://stedolan.github.io/jq/" target="new">jq</a> (if installed).
@@ -47,9 +47,9 @@ nav
//*[contains(text(), 'Advertisement')]") }}
<span class="pure-form-message-inline">
<ul>
<li> {{ _('Remove HTML element(s) by CSS and XPath selectors before text conversion.') }} </li>
<li> {{ _("Don't paste HTML here, use only CSS and XPath selectors") }} </li>
<li> {{ _('Add multiple elements, CSS or XPath selectors per line to ignore multiple parts of the HTML.') }} </li>
<li> Remove HTML element(s) by CSS and XPath selectors before text conversion. </li>
<li> Don't paste HTML here, use only CSS and XPath selectors </li>
<li> Add multiple elements, CSS or XPath selectors per line to ignore multiple parts of the HTML. </li>
</ul>
</span>
</fieldset>

View File

@@ -381,14 +381,14 @@ def test_extract_lines_containing_with_ignore_text(client, live_server, measure_
f.write(initial_data)
test_url = url_for('test_endpoint', _external=True)
uuid = client.application.config.get('DATASTORE').add_watch(url=test_url, extras={'paused': True})
uuid = client.application.config.get('DATASTORE').add_watch(url=test_url)
# Set filters BEFORE the first check so the baseline is always filtered+ignored.
# (Setting them after an initial unfiltered check creates a race: the forced recheck
# that updates previous_md5 must complete before the next content write, which is
# timing-sensitive and fails intermittently on slower systems / Python 3.14.)
res = client.post(
url_for("ui.ui_edit.edit_page", uuid=uuid, unpause_on_save=1),
url_for("ui.ui_edit.edit_page", uuid=uuid),
data={
'extract_lines_containing': 'celsius',
'ignore_text': 'Feels like',
@@ -400,12 +400,13 @@ def test_extract_lines_containing_with_ignore_text(client, live_server, measure_
},
follow_redirects=True
)
assert b"unpaused" in res.data
assert b"Updated watch." in res.data
# First check — establishes filtered+ignored baseline. previous_md5 was False so
# a change is always detected here; mark_all_viewed clears it before we assert.
client.get(url_for("ui.form_watch_checknow"), follow_redirects=True)
wait_for_all_checks(client)
client.get(url_for("ui.mark_all_viewed"), follow_redirects=True)
# Sanity: preview should only show celsius lines
res = client.get(url_for("ui.ui_preview.preview_page", uuid=uuid), follow_redirects=True)
@@ -426,10 +427,10 @@ def test_extract_lines_containing_with_ignore_text(client, live_server, measure_
wait_for_all_checks(client)
res = client.get(url_for("watchlist.index"))
assert b'has-unread-changes' not in res.data, "Changing an ignored line should not trigger a change notification"
assert b'has-unread-changes' not in res.data, \
"Changing an ignored line should not trigger a change notification"
client.get(url_for("ui.mark_all_viewed"), follow_redirects=True)
time.sleep(1)
# Change the non-ignored celsius line — SHOULD trigger
triggered_data = """<html><body>
@@ -445,7 +446,8 @@ def test_extract_lines_containing_with_ignore_text(client, live_server, measure_
wait_for_all_checks(client)
res = client.get(url_for("watchlist.index"))
assert b'has-unread-changes' in res.data, "Changing a non-ignored line should trigger a change notification"
assert b'has-unread-changes' in res.data, \
"Changing a non-ignored line should trigger a change notification"
delete_all_watches(client)

View File

@@ -50,85 +50,6 @@ def test_favicon(client, live_server, measure_memory_usage, datastore_path):
res = client.get(url_for('static_content', group='js', filename='../styles/styles.css'))
assert res.status_code != 200
def test_favicon_inline_data_uri(client, live_server, measure_memory_usage, datastore_path):
"""
bump_favicon() must handle a data URI as the url parameter.
Previously this logged "Cant work out file extension from 'data:image/png;base64,...'" and bailed.
The mime_type from the data URI should be used to pick the correct extension.
"""
import base64
import os
# 1x1 transparent PNG (minimal valid PNG bytes)
PNG_BYTES = (
b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x01\x00\x00\x00\x01'
b'\x08\x06\x00\x00\x00\x1f\x15\xc4\x89\x00\x00\x00\nIDATx\x9cc\x00\x01'
b'\x00\x00\x05\x00\x01\r\n-\xb4\x00\x00\x00\x00IEND\xaeB`\x82'
)
png_b64 = base64.b64encode(PNG_BYTES).decode()
data_uri = f"data:image/png;base64,{png_b64}"
uuid = client.application.config.get('DATASTORE').add_watch(url='https://localhost')
watch = live_server.app.config['DATASTORE'].data['watching'][uuid]
# Should NOT raise / bail — must save as favicon.png
watch.bump_favicon(url=data_uri, favicon_base_64=png_b64, mime_type='image/png')
favicon_fname = watch.get_favicon_filename()
assert favicon_fname is not None, "Favicon should have been saved"
assert favicon_fname.endswith('.png'), f"Expected .png extension, got: {favicon_fname}"
full_path = os.path.join(watch.data_dir, favicon_fname)
assert os.path.getsize(full_path) == len(PNG_BYTES)
# Also verify it's served correctly via the static route
res = client.get(url_for('static_content', group='favicon', filename=uuid))
assert res.status_code == 200
assert res.data == PNG_BYTES
def test_favicon_mime_type_overrides_url_extension(client, live_server, measure_memory_usage, datastore_path):
"""
mime_type parameter takes precedence over the URL path extension.
A URL ending in .ico but with mime_type='image/png' should save as .png.
"""
import base64
import os
PNG_BYTES = (
b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x01\x00\x00\x00\x01'
b'\x08\x06\x00\x00\x00\x1f\x15\xc4\x89\x00\x00\x00\nIDATx\x9cc\x00\x01'
b'\x00\x00\x05\x00\x01\r\n-\xb4\x00\x00\x00\x00IEND\xaeB`\x82'
)
png_b64 = base64.b64encode(PNG_BYTES).decode()
uuid = client.application.config.get('DATASTORE').add_watch(url='https://localhost')
watch = live_server.app.config['DATASTORE'].data['watching'][uuid]
watch.bump_favicon(url='https://example.com/favicon.ico', favicon_base_64=png_b64, mime_type='image/png')
favicon_fname = watch.get_favicon_filename()
assert favicon_fname is not None
assert favicon_fname.endswith('.png'), f"mime_type should override URL extension, got: {favicon_fname}"
def test_favicon_oversized_rejected(client, live_server, measure_memory_usage, datastore_path):
"""Favicons larger than 1 MB must be silently dropped."""
import base64
import os
oversized = b'\x00' * (1 * 1024 * 1024 + 1)
oversized_b64 = base64.b64encode(oversized).decode()
uuid = client.application.config.get('DATASTORE').add_watch(url='https://localhost')
watch = live_server.app.config['DATASTORE'].data['watching'][uuid]
result = watch.bump_favicon(url='https://example.com/big.png', favicon_base_64=oversized_b64, mime_type='image/png')
assert result is None, "bump_favicon should return None for oversized favicon"
assert watch.get_favicon_filename() is None, "No favicon file should have been written"
def test_bad_access(client, live_server, measure_memory_usage, datastore_path):
res = client.post(

View File

@@ -70,10 +70,6 @@ def test_trigger_functionality(client, live_server, measure_memory_usage, datast
uuid = client.application.config.get('DATASTORE').add_watch(url=test_url)
client.get(url_for("ui.form_watch_checknow"), follow_redirects=True)
# And set the trigger text as 'ignore text', it should then not trigger
live_server.app.config['DATASTORE'].data['settings']['application']['global_ignore_text'] = [trigger_text]
# Trigger a check
client.get(url_for("ui.form_watch_checknow"), follow_redirects=True)
@@ -126,16 +122,6 @@ def test_trigger_functionality(client, live_server, measure_memory_usage, datast
# Now set the content which contains the trigger text
set_modified_with_trigger_text_response(datastore_path=datastore_path)
# There is a "ignore text" set of the change that should be also the trigger, it should not trigger
# because the ignore text should be stripped from the response, therefor, the trigger should not fire
client.get(url_for("ui.form_watch_checknow"), follow_redirects=True)
wait_for_all_checks(client)
res = client.get(url_for("watchlist.index"))
assert b'has-unread-changes' not in res.data
live_server.app.config['DATASTORE'].data['settings']['application']['global_ignore_text'] = []
# check that the trigger fired once we stopped ignore it
client.get(url_for("ui.form_watch_checknow"), follow_redirects=True)
wait_for_all_checks(client)
res = client.get(url_for("watchlist.index"))

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-04-19 00:17+0900\n"
"POT-Creation-Date: 2026-04-11 04:15+0200\n"
"PO-Revision-Date: 2026-01-02 11:40+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: cs\n"
@@ -590,15 +590,15 @@ msgstr ""
msgid "Changing this could affect the content of your existing watches, possibly trigger alerts etc."
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Remove HTML element(s) by CSS and XPath selectors before text conversion."
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Don't paste HTML here, use only CSS and XPath selectors"
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Add multiple elements, CSS or XPath selectors per line to ignore multiple parts of the HTML."
msgstr ""
@@ -829,26 +829,6 @@ msgstr ""
msgid "Updated"
msgstr "Ztlumit"
#: changedetectionio/blueprint/tags/form.py
msgid "Activate for individual watches in this tag/group?"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Auto-apply to watches with URLs matching"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "e.g. *://example.com/* or github.com/myorg"
msgstr ""
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Tag name"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html changedetectionio/blueprint/ui/templates/edit.html
msgid "Filters & Triggers"
msgstr "Filtry a spouštěče"
@@ -863,6 +843,10 @@ msgstr ""
msgid "Currently matching watches"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Custom colour"
msgstr ""
@@ -948,11 +932,7 @@ msgstr "Tag / Název štítku"
msgid "No website organisational tags/groups configured"
msgstr "Žádné skupiny/značky zatím nebyly nastaveny"
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr "Ztlumit oznámení"
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/blueprint/ui/edit.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Edit"
msgstr "Upravit"
@@ -1155,14 +1135,6 @@ msgstr ""
msgid "Could not load '{}' processor, processor plugin might be missing."
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "System settings default"
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "Default"
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "Updated watch - unpaused!"
msgstr ""
@@ -1175,10 +1147,6 @@ msgstr "Sledování aktualizováno."
msgid "Preview unavailable - No fetch/check completed or triggers not reached"
msgstr ""
#: changedetectionio/blueprint/ui/preview.py
msgid "Diff"
msgstr ""
#: changedetectionio/blueprint/ui/templates/clear_all_history.html
msgid "This will remove version history (snapshots) for ALL watches, but keep your list of URLs!"
msgstr ""
@@ -1288,17 +1256,14 @@ msgid "Jump"
msgstr "Skok"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Text"
msgstr "Text chyby"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Screenshot"
msgstr "Snímek obrazovky s chybou"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Text"
msgstr "Text"
@@ -1306,8 +1271,7 @@ msgstr "Text"
msgid "Current screenshot"
msgstr "Aktuální snímek obrazovky"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/processors/extract.py
#: changedetectionio/processors/templates/extract.html
#: changedetectionio/blueprint/ui/templates/diff.html
msgid "Extract Data"
msgstr "Extrahovat data"
@@ -1897,26 +1861,6 @@ msgstr "Nejsou nakonfigurována žádná sledování webových stránek, do vý
msgid "import a list"
msgstr "importovat seznam"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Pause checks"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnPause checks"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Mute notification"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnMute notification"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Create a link to share watch config with others"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Detecting restock and price"
msgstr "Kontrola zásob a ceny"
@@ -1937,24 +1881,15 @@ msgstr "Cena"
msgid "No information"
msgstr "Žádné informace"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Checked"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/templates/base.html
msgid "Checking now"
msgstr "Probíhá kontrola"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Changed"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Queued"
msgstr "Ve frontě"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
#: changedetectionio/processors/text_json_diff/difference.py
msgid "History"
msgstr "Historie"
@@ -1988,168 +1923,6 @@ msgstr "Znovu zkontrolovat vše"
msgid "in '%(title)s'"
msgstr "v '%(title)s'"
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Operator"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Greater Than"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Less Than"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Greater Than or Equal To"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Less Than or Equal To"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Equals"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Not Equals"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Contains"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Field"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Does NOT Contain"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Starts With"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Ends With"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Length minimum"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Length maximum"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Matches Regex"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Does NOT Match Regex"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Extracted number after 'Filters & Triggers'"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Page text after 'Filters & Triggers'"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Field"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Operator"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "A value"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Operator is required."
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Field is required."
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Value is required."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text similarity ratio"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text change distance"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Not enough history to calculate Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Snapshot too large for edit statistics, skipping."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Unable to calculate Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein Text Similarity Details"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Raw distance (edits needed)"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Similarity ratio"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Percent similar"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid ""
"Levenshtein metrics compare the last two snapshots, measuring how many character edits are needed to transform one "
"into the other."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Error calculating Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count of content"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Content Analysis"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count (latest snapshot)"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count is a simple measure of content length, calculated by splitting text on whitespace."
msgstr ""
#: changedetectionio/content_fetchers/requests.py
msgid "Basic fast Plaintext/HTTP Client"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/flask_app.py
#: changedetectionio/realtime/socket_server.py
msgid "Not yet"
@@ -2434,26 +2207,10 @@ msgstr "Možnosti uživatelského rozhraní"
msgid "Selector"
msgstr "Režim výběru:"
#: changedetectionio/forms.py
msgid "CSS or xPath selector"
msgstr ""
#: changedetectionio/forms.py
msgid "value"
msgstr "Pauza"
#: changedetectionio/conditions/form.py changedetectionio/forms.py
msgid "Value"
msgstr ""
#: changedetectionio/forms.py
msgid "Web Page URL"
msgstr ""
#: changedetectionio/forms.py
msgid "Group Tag"
msgstr ""
#: changedetectionio/forms.py
msgid "Time Between Check"
msgstr "Interval mezi kontrolami"
@@ -2542,8 +2299,7 @@ msgstr "Blokovat detekci změn, když se text shoduje"
msgid "Execute JavaScript before change detection"
msgstr "Spusťte JavaScript před detekcí změn"
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/forms.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/forms.py
msgid "Save"
msgstr "Uložit"
@@ -2611,7 +2367,7 @@ msgstr "Neplatná syntaxe šablony: %(error)s"
msgid "Invalid template syntax in \"%(header)s\" header: %(error)s"
msgstr "Neplatná syntax šablony v \"%(header)s\" hlavička: %(error)s"
#: changedetectionio/blueprint/tags/form.py changedetectionio/forms.py
#: changedetectionio/forms.py
msgid "Name"
msgstr "Název"
@@ -2707,10 +2463,6 @@ msgstr "Text chyby"
msgid "Ignore whitespace"
msgstr "Ignorujte mezery"
#: changedetectionio/forms.py
msgid "Screenshot: Minimum Change Percentage"
msgstr ""
#: changedetectionio/forms.py changedetectionio/processors/image_ssim_diff/forms.py
msgid "Must be between 0 and 100"
msgstr "Musí být mezi 0 a 100"
@@ -2910,42 +2662,6 @@ msgstr "Doplnění zásob a zjištění ceny pro stránky s JEDINÝM produktem"
msgid "Detects if the product goes back to in-stock"
msgstr "Zjistí, zda se produkt vrátí na sklad"
#: changedetectionio/processors/templates/extract.html
msgid "Screenshot"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "This tool will extract text data from all of the watch history."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "A <strong>RegEx</strong> is a pattern that identifies exactly which part inside of the text that you want to extract."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "For example, to extract only the numbers from text"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Raw text"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "RegEx to extract:"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Be sure to test your RegEx here."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Each RegEx group bracket"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "will be in its own column, the first column value is always the date."
msgstr ""
#: changedetectionio/processors/text_json_diff/processor.py
msgid "Webpage Text/HTML, JSON and PDF changes"
msgstr "Změny textu webové stránky/HTML, JSON a PDF"
@@ -3125,7 +2841,7 @@ msgstr ""
msgid "Use"
msgstr "Použít"
#: changedetectionio/templates/_common_fields.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/templates/_common_fields.html
msgid "Show advanced help and tips"
msgstr "Zobrazit pokročilou nápovědu a tipy"
@@ -3229,26 +2945,6 @@ msgstr ""
msgid "Format for all notifications"
msgstr "Formát pro všechna oznámení"
#: changedetectionio/templates/_common_fields.html
msgid "Note"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Discord does not render HTML — switch to"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Plain Text"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "format to avoid"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "and other HTML entities appearing literally in your notifications."
msgstr ""
#: changedetectionio/templates/_helpers.html
msgid "Entry"
msgstr ""
@@ -3365,18 +3061,10 @@ msgstr "Nedojde k detekci změn, protože tento text existuje."
msgid "Blocked text"
msgstr "Blokovaný text"
#: changedetectionio/templates/base.html
msgid "A new version is available"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Search, or Use Alt+S Key"
msgstr "Vyhledejte nebo použijte klávesu Alt+S"
#: changedetectionio/templates/base.html
msgid "Share this link:"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Real-time updates offline"
msgstr "Aktualizace v reálném čase offline"
@@ -3547,6 +3235,10 @@ msgstr ""
msgid "Unmute notifications"
msgstr "Odtlumit oznámení"
#: changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr "Ztlumit oznámení"
#: changedetectionio/templates/menu.html
msgid "Notifications are muted - click to unmute"
msgstr "Oznámení jsou ztlumena - klikněte pro odtlumení"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-04-19 00:17+0900\n"
"POT-Creation-Date: 2026-04-11 04:15+0200\n"
"PO-Revision-Date: 2026-01-14 03:57+0100\n"
"Last-Translator: \n"
"Language: de\n"
@@ -604,15 +604,15 @@ msgstr ""
msgid "Changing this could affect the content of your existing watches, possibly trigger alerts etc."
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Remove HTML element(s) by CSS and XPath selectors before text conversion."
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Don't paste HTML here, use only CSS and XPath selectors"
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Add multiple elements, CSS or XPath selectors per line to ignore multiple parts of the HTML."
msgstr ""
@@ -843,26 +843,6 @@ msgstr "Tag nicht gefunden"
msgid "Updated"
msgstr "Aktualisiert"
#: changedetectionio/blueprint/tags/form.py
msgid "Activate for individual watches in this tag/group?"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Auto-apply to watches with URLs matching"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "e.g. *://example.com/* or github.com/myorg"
msgstr ""
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Tag name"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html changedetectionio/blueprint/ui/templates/edit.html
msgid "Filters & Triggers"
msgstr "Filter und Trigger"
@@ -877,6 +857,10 @@ msgstr ""
msgid "Currently matching watches"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Custom colour"
msgstr ""
@@ -964,11 +948,7 @@ msgstr "Tag-/Labelname"
msgid "No website organisational tags/groups configured"
msgstr "Keine Gruppen/Labels konfiguriert"
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr "Benachrichtigungen stummschalten"
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/blueprint/ui/edit.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Edit"
msgstr "Bearbeiten"
@@ -1175,14 +1155,6 @@ msgstr ""
msgid "Could not load '{}' processor, processor plugin might be missing."
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "System settings default"
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "Default"
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "Updated watch - unpaused!"
msgstr "Aktualisierte Überwachung fortgesetzt!"
@@ -1195,10 +1167,6 @@ msgstr "Überwachung aktualisiert."
msgid "Preview unavailable - No fetch/check completed or triggers not reached"
msgstr "Vorschau nicht verfügbar Kein Abruf/keine Überprüfung abgeschlossen oder Trigger nicht erreicht"
#: changedetectionio/blueprint/ui/preview.py
msgid "Diff"
msgstr ""
#: changedetectionio/blueprint/ui/templates/clear_all_history.html
msgid "This will remove version history (snapshots) for ALL watches, but keep your list of URLs!"
msgstr ""
@@ -1310,17 +1278,14 @@ msgid "Jump"
msgstr "Springen"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Text"
msgstr "Fehlertext"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Screenshot"
msgstr "Fehler-Screenshot"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Text"
msgstr "Text"
@@ -1328,8 +1293,7 @@ msgstr "Text"
msgid "Current screenshot"
msgstr "Aktueller Screenshot"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/processors/extract.py
#: changedetectionio/processors/templates/extract.html
#: changedetectionio/blueprint/ui/templates/diff.html
msgid "Extract Data"
msgstr "Daten extrahieren"
@@ -1943,26 +1907,6 @@ msgstr "Es sind keine Website-Überwachungen konfiguriert. Bitte fügen Sie im F
msgid "import a list"
msgstr "eine Liste importieren"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Pause checks"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnPause checks"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Mute notification"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnMute notification"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Create a link to share watch config with others"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Detecting restock and price"
msgstr "Erkennen von Lagerbeständen und Preisen"
@@ -1983,24 +1927,15 @@ msgstr "Preis"
msgid "No information"
msgstr "Keine Informationen"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Checked"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/templates/base.html
msgid "Checking now"
msgstr "Jetzt prüfen"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Changed"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Queued"
msgstr "Wartend"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
#: changedetectionio/processors/text_json_diff/difference.py
msgid "History"
msgstr "Verlauf"
@@ -2034,168 +1969,6 @@ msgstr "Überprüfen Sie alles noch einmal"
msgid "in '%(title)s'"
msgstr "in '%(title)s'"
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Operator"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Greater Than"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Less Than"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Greater Than or Equal To"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Less Than or Equal To"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Equals"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Not Equals"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Contains"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Field"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Does NOT Contain"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Starts With"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Ends With"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Length minimum"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Length maximum"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Matches Regex"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Does NOT Match Regex"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Extracted number after 'Filters & Triggers'"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Page text after 'Filters & Triggers'"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Field"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Operator"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "A value"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Operator is required."
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Field is required."
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Value is required."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text similarity ratio"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text change distance"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Not enough history to calculate Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Snapshot too large for edit statistics, skipping."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Unable to calculate Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein Text Similarity Details"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Raw distance (edits needed)"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Similarity ratio"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Percent similar"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid ""
"Levenshtein metrics compare the last two snapshots, measuring how many character edits are needed to transform one "
"into the other."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Error calculating Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count of content"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Content Analysis"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count (latest snapshot)"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count is a simple measure of content length, calculated by splitting text on whitespace."
msgstr ""
#: changedetectionio/content_fetchers/requests.py
msgid "Basic fast Plaintext/HTTP Client"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/flask_app.py
#: changedetectionio/realtime/socket_server.py
msgid "Not yet"
@@ -2480,26 +2253,10 @@ msgstr "UI-Optionen"
msgid "Selector"
msgstr "Auswahlmodus:"
#: changedetectionio/forms.py
msgid "CSS or xPath selector"
msgstr ""
#: changedetectionio/forms.py
msgid "value"
msgstr "Wert"
#: changedetectionio/conditions/form.py changedetectionio/forms.py
msgid "Value"
msgstr ""
#: changedetectionio/forms.py
msgid "Web Page URL"
msgstr ""
#: changedetectionio/forms.py
msgid "Group Tag"
msgstr ""
#: changedetectionio/forms.py
msgid "Time Between Check"
msgstr "Prüfintervall"
@@ -2588,8 +2345,7 @@ msgstr "Blockieren Sie die Änderungserkennung, während der Text übereinstimmt
msgid "Execute JavaScript before change detection"
msgstr "Führen Sie JavaScript vor der Änderungserkennung aus"
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/forms.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/forms.py
msgid "Save"
msgstr "Speichern"
@@ -2658,7 +2414,7 @@ msgstr "Ungültige Vorlagensyntax: %(error)s"
msgid "Invalid template syntax in \"%(header)s\" header: %(error)s"
msgstr "Ungültige Vorlagensyntax im Header „%(header)s“: %(error)s"
#: changedetectionio/blueprint/tags/form.py changedetectionio/forms.py
#: changedetectionio/forms.py
msgid "Name"
msgstr "Name"
@@ -2754,10 +2510,6 @@ msgstr "Text ignorieren"
msgid "Ignore whitespace"
msgstr "Leerzeichen ignorieren"
#: changedetectionio/forms.py
msgid "Screenshot: Minimum Change Percentage"
msgstr ""
#: changedetectionio/forms.py changedetectionio/processors/image_ssim_diff/forms.py
msgid "Must be between 0 and 100"
msgstr "Muss zwischen 0 und 100 liegen"
@@ -2959,42 +2711,6 @@ msgstr "Wiederauffüllung und Preiserkennung für Seiten mit einem EINZELNEN Pro
msgid "Detects if the product goes back to in-stock"
msgstr "Erkennt, ob das Produkt wieder auf Lager ist"
#: changedetectionio/processors/templates/extract.html
msgid "Screenshot"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "This tool will extract text data from all of the watch history."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "A <strong>RegEx</strong> is a pattern that identifies exactly which part inside of the text that you want to extract."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "For example, to extract only the numbers from text"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Raw text"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "RegEx to extract:"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Be sure to test your RegEx here."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Each RegEx group bracket"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "will be in its own column, the first column value is always the date."
msgstr ""
#: changedetectionio/processors/text_json_diff/processor.py
msgid "Webpage Text/HTML, JSON and PDF changes"
msgstr "Änderungen an Webseitentext/HTML, JSON und PDF"
@@ -3174,7 +2890,7 @@ msgstr ""
msgid "Use"
msgstr "Verwenden"
#: changedetectionio/templates/_common_fields.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/templates/_common_fields.html
msgid "Show advanced help and tips"
msgstr "Erweiterte Hilfe und Tipps anzeigen"
@@ -3278,26 +2994,6 @@ msgstr ""
msgid "Format for all notifications"
msgstr "Format für alle Benachrichtigungen"
#: changedetectionio/templates/_common_fields.html
msgid "Note"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Discord does not render HTML — switch to"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Plain Text"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "format to avoid"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "and other HTML entities appearing literally in your notifications."
msgstr ""
#: changedetectionio/templates/_helpers.html
msgid "Entry"
msgstr ""
@@ -3414,18 +3110,10 @@ msgstr "Es wird keine Änderungserkennung stattfinden, da dieser Text existiert.
msgid "Blocked text"
msgstr "Blockierter Text"
#: changedetectionio/templates/base.html
msgid "A new version is available"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Search, or Use Alt+S Key"
msgstr "Suchen oder Alt+S-Taste verwenden"
#: changedetectionio/templates/base.html
msgid "Share this link:"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Real-time updates offline"
msgstr "Echtzeit-Updates offline"
@@ -3598,6 +3286,10 @@ msgstr ""
msgid "Unmute notifications"
msgstr "Benachrichtigungen entstummen"
#: changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr "Benachrichtigungen stummschalten"
#: changedetectionio/templates/menu.html
msgid "Notifications are muted - click to unmute"
msgstr "Benachrichtigungen sind stummgeschaltet - klicken zum Entstummen"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: changedetection.io\n"
"Report-Msgid-Bugs-To: https://github.com/dgtlmoon/changedetection.io\n"
"POT-Creation-Date: 2026-04-19 00:17+0900\n"
"POT-Creation-Date: 2026-04-11 04:15+0200\n"
"PO-Revision-Date: 2026-01-12 16:33+0100\n"
"Last-Translator: British English Translation Team\n"
"Language: en_GB\n"
@@ -590,15 +590,15 @@ msgstr ""
msgid "Changing this could affect the content of your existing watches, possibly trigger alerts etc."
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Remove HTML element(s) by CSS and XPath selectors before text conversion."
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Don't paste HTML here, use only CSS and XPath selectors"
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Add multiple elements, CSS or XPath selectors per line to ignore multiple parts of the HTML."
msgstr ""
@@ -829,26 +829,6 @@ msgstr ""
msgid "Updated"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Activate for individual watches in this tag/group?"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Auto-apply to watches with URLs matching"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "e.g. *://example.com/* or github.com/myorg"
msgstr ""
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Tag name"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html changedetectionio/blueprint/ui/templates/edit.html
msgid "Filters & Triggers"
msgstr ""
@@ -863,6 +843,10 @@ msgstr ""
msgid "Currently matching watches"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Custom colour"
msgstr ""
@@ -948,11 +932,7 @@ msgstr ""
msgid "No website organisational tags/groups configured"
msgstr ""
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr ""
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/blueprint/ui/edit.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Edit"
msgstr ""
@@ -1155,14 +1135,6 @@ msgstr ""
msgid "Could not load '{}' processor, processor plugin might be missing."
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "System settings default"
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "Default"
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "Updated watch - unpaused!"
msgstr ""
@@ -1175,10 +1147,6 @@ msgstr ""
msgid "Preview unavailable - No fetch/check completed or triggers not reached"
msgstr ""
#: changedetectionio/blueprint/ui/preview.py
msgid "Diff"
msgstr ""
#: changedetectionio/blueprint/ui/templates/clear_all_history.html
msgid "This will remove version history (snapshots) for ALL watches, but keep your list of URLs!"
msgstr ""
@@ -1288,17 +1256,14 @@ msgid "Jump"
msgstr ""
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Text"
msgstr ""
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Screenshot"
msgstr ""
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Text"
msgstr ""
@@ -1306,8 +1271,7 @@ msgstr ""
msgid "Current screenshot"
msgstr ""
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/processors/extract.py
#: changedetectionio/processors/templates/extract.html
#: changedetectionio/blueprint/ui/templates/diff.html
msgid "Extract Data"
msgstr ""
@@ -1897,26 +1861,6 @@ msgstr ""
msgid "import a list"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Pause checks"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnPause checks"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Mute notification"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnMute notification"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Create a link to share watch config with others"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Detecting restock and price"
msgstr ""
@@ -1937,24 +1881,15 @@ msgstr ""
msgid "No information"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Checked"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/templates/base.html
msgid "Checking now"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Changed"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Queued"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
#: changedetectionio/processors/text_json_diff/difference.py
msgid "History"
msgstr ""
@@ -1988,168 +1923,6 @@ msgstr ""
msgid "in '%(title)s'"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Operator"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Greater Than"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Less Than"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Greater Than or Equal To"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Less Than or Equal To"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Equals"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Not Equals"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Contains"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Field"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Does NOT Contain"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Starts With"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Ends With"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Length minimum"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Length maximum"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Matches Regex"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Does NOT Match Regex"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Extracted number after 'Filters & Triggers'"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Page text after 'Filters & Triggers'"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Field"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Operator"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "A value"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Operator is required."
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Field is required."
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Value is required."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text similarity ratio"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text change distance"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Not enough history to calculate Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Snapshot too large for edit statistics, skipping."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Unable to calculate Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein Text Similarity Details"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Raw distance (edits needed)"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Similarity ratio"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Percent similar"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid ""
"Levenshtein metrics compare the last two snapshots, measuring how many character edits are needed to transform one "
"into the other."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Error calculating Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count of content"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Content Analysis"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count (latest snapshot)"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count is a simple measure of content length, calculated by splitting text on whitespace."
msgstr ""
#: changedetectionio/content_fetchers/requests.py
msgid "Basic fast Plaintext/HTTP Client"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/flask_app.py
#: changedetectionio/realtime/socket_server.py
msgid "Not yet"
@@ -2432,26 +2205,10 @@ msgstr ""
msgid "Selector"
msgstr ""
#: changedetectionio/forms.py
msgid "CSS or xPath selector"
msgstr ""
#: changedetectionio/forms.py
msgid "value"
msgstr ""
#: changedetectionio/conditions/form.py changedetectionio/forms.py
msgid "Value"
msgstr ""
#: changedetectionio/forms.py
msgid "Web Page URL"
msgstr ""
#: changedetectionio/forms.py
msgid "Group Tag"
msgstr ""
#: changedetectionio/forms.py
msgid "Time Between Check"
msgstr ""
@@ -2540,8 +2297,7 @@ msgstr ""
msgid "Execute JavaScript before change detection"
msgstr ""
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/forms.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/forms.py
msgid "Save"
msgstr ""
@@ -2609,7 +2365,7 @@ msgstr ""
msgid "Invalid template syntax in \"%(header)s\" header: %(error)s"
msgstr ""
#: changedetectionio/blueprint/tags/form.py changedetectionio/forms.py
#: changedetectionio/forms.py
msgid "Name"
msgstr ""
@@ -2705,10 +2461,6 @@ msgstr ""
msgid "Ignore whitespace"
msgstr ""
#: changedetectionio/forms.py
msgid "Screenshot: Minimum Change Percentage"
msgstr ""
#: changedetectionio/forms.py changedetectionio/processors/image_ssim_diff/forms.py
msgid "Must be between 0 and 100"
msgstr ""
@@ -2908,42 +2660,6 @@ msgstr ""
msgid "Detects if the product goes back to in-stock"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Screenshot"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "This tool will extract text data from all of the watch history."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "A <strong>RegEx</strong> is a pattern that identifies exactly which part inside of the text that you want to extract."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "For example, to extract only the numbers from text"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Raw text"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "RegEx to extract:"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Be sure to test your RegEx here."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Each RegEx group bracket"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "will be in its own column, the first column value is always the date."
msgstr ""
#: changedetectionio/processors/text_json_diff/processor.py
msgid "Webpage Text/HTML, JSON and PDF changes"
msgstr ""
@@ -3123,7 +2839,7 @@ msgstr ""
msgid "Use"
msgstr ""
#: changedetectionio/templates/_common_fields.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/templates/_common_fields.html
msgid "Show advanced help and tips"
msgstr ""
@@ -3227,26 +2943,6 @@ msgstr ""
msgid "Format for all notifications"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Note"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Discord does not render HTML — switch to"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Plain Text"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "format to avoid"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "and other HTML entities appearing literally in your notifications."
msgstr ""
#: changedetectionio/templates/_helpers.html
msgid "Entry"
msgstr ""
@@ -3363,18 +3059,10 @@ msgstr ""
msgid "Blocked text"
msgstr ""
#: changedetectionio/templates/base.html
msgid "A new version is available"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Search, or Use Alt+S Key"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Share this link:"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Real-time updates offline"
msgstr ""
@@ -3545,6 +3233,10 @@ msgstr ""
msgid "Unmute notifications"
msgstr ""
#: changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr ""
#: changedetectionio/templates/menu.html
msgid "Notifications are muted - click to unmute"
msgstr ""

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: https://github.com/dgtlmoon/changedetection.io\n"
"POT-Creation-Date: 2026-04-19 00:17+0900\n"
"POT-Creation-Date: 2026-04-11 04:15+0200\n"
"PO-Revision-Date: 2026-01-12 16:37+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: en_US\n"
@@ -590,15 +590,15 @@ msgstr ""
msgid "Changing this could affect the content of your existing watches, possibly trigger alerts etc."
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Remove HTML element(s) by CSS and XPath selectors before text conversion."
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Don't paste HTML here, use only CSS and XPath selectors"
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Add multiple elements, CSS or XPath selectors per line to ignore multiple parts of the HTML."
msgstr ""
@@ -829,26 +829,6 @@ msgstr ""
msgid "Updated"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Activate for individual watches in this tag/group?"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Auto-apply to watches with URLs matching"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "e.g. *://example.com/* or github.com/myorg"
msgstr ""
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Tag name"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html changedetectionio/blueprint/ui/templates/edit.html
msgid "Filters & Triggers"
msgstr ""
@@ -863,6 +843,10 @@ msgstr ""
msgid "Currently matching watches"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Custom colour"
msgstr ""
@@ -948,11 +932,7 @@ msgstr ""
msgid "No website organisational tags/groups configured"
msgstr "No website organizational tags/groups configured"
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr ""
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/blueprint/ui/edit.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Edit"
msgstr ""
@@ -1155,14 +1135,6 @@ msgstr ""
msgid "Could not load '{}' processor, processor plugin might be missing."
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "System settings default"
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "Default"
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "Updated watch - unpaused!"
msgstr ""
@@ -1175,10 +1147,6 @@ msgstr ""
msgid "Preview unavailable - No fetch/check completed or triggers not reached"
msgstr ""
#: changedetectionio/blueprint/ui/preview.py
msgid "Diff"
msgstr ""
#: changedetectionio/blueprint/ui/templates/clear_all_history.html
msgid "This will remove version history (snapshots) for ALL watches, but keep your list of URLs!"
msgstr ""
@@ -1288,17 +1256,14 @@ msgid "Jump"
msgstr ""
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Text"
msgstr ""
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Screenshot"
msgstr ""
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Text"
msgstr ""
@@ -1306,8 +1271,7 @@ msgstr ""
msgid "Current screenshot"
msgstr ""
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/processors/extract.py
#: changedetectionio/processors/templates/extract.html
#: changedetectionio/blueprint/ui/templates/diff.html
msgid "Extract Data"
msgstr ""
@@ -1897,26 +1861,6 @@ msgstr ""
msgid "import a list"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Pause checks"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnPause checks"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Mute notification"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnMute notification"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Create a link to share watch config with others"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Detecting restock and price"
msgstr ""
@@ -1937,24 +1881,15 @@ msgstr ""
msgid "No information"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Checked"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/templates/base.html
msgid "Checking now"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Changed"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Queued"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
#: changedetectionio/processors/text_json_diff/difference.py
msgid "History"
msgstr ""
@@ -1988,168 +1923,6 @@ msgstr ""
msgid "in '%(title)s'"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Operator"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Greater Than"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Less Than"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Greater Than or Equal To"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Less Than or Equal To"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Equals"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Not Equals"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Contains"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Field"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Does NOT Contain"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Starts With"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Ends With"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Length minimum"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Length maximum"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Matches Regex"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Does NOT Match Regex"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Extracted number after 'Filters & Triggers'"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Page text after 'Filters & Triggers'"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Field"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Operator"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "A value"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Operator is required."
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Field is required."
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Value is required."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text similarity ratio"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text change distance"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Not enough history to calculate Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Snapshot too large for edit statistics, skipping."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Unable to calculate Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein Text Similarity Details"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Raw distance (edits needed)"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Similarity ratio"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Percent similar"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid ""
"Levenshtein metrics compare the last two snapshots, measuring how many character edits are needed to transform one "
"into the other."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Error calculating Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count of content"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Content Analysis"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count (latest snapshot)"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count is a simple measure of content length, calculated by splitting text on whitespace."
msgstr ""
#: changedetectionio/content_fetchers/requests.py
msgid "Basic fast Plaintext/HTTP Client"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/flask_app.py
#: changedetectionio/realtime/socket_server.py
msgid "Not yet"
@@ -2432,26 +2205,10 @@ msgstr ""
msgid "Selector"
msgstr ""
#: changedetectionio/forms.py
msgid "CSS or xPath selector"
msgstr ""
#: changedetectionio/forms.py
msgid "value"
msgstr ""
#: changedetectionio/conditions/form.py changedetectionio/forms.py
msgid "Value"
msgstr ""
#: changedetectionio/forms.py
msgid "Web Page URL"
msgstr ""
#: changedetectionio/forms.py
msgid "Group Tag"
msgstr ""
#: changedetectionio/forms.py
msgid "Time Between Check"
msgstr ""
@@ -2540,8 +2297,7 @@ msgstr ""
msgid "Execute JavaScript before change detection"
msgstr ""
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/forms.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/forms.py
msgid "Save"
msgstr ""
@@ -2609,7 +2365,7 @@ msgstr ""
msgid "Invalid template syntax in \"%(header)s\" header: %(error)s"
msgstr ""
#: changedetectionio/blueprint/tags/form.py changedetectionio/forms.py
#: changedetectionio/forms.py
msgid "Name"
msgstr ""
@@ -2705,10 +2461,6 @@ msgstr ""
msgid "Ignore whitespace"
msgstr ""
#: changedetectionio/forms.py
msgid "Screenshot: Minimum Change Percentage"
msgstr ""
#: changedetectionio/forms.py changedetectionio/processors/image_ssim_diff/forms.py
msgid "Must be between 0 and 100"
msgstr ""
@@ -2908,42 +2660,6 @@ msgstr ""
msgid "Detects if the product goes back to in-stock"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Screenshot"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "This tool will extract text data from all of the watch history."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "A <strong>RegEx</strong> is a pattern that identifies exactly which part inside of the text that you want to extract."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "For example, to extract only the numbers from text"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Raw text"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "RegEx to extract:"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Be sure to test your RegEx here."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Each RegEx group bracket"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "will be in its own column, the first column value is always the date."
msgstr ""
#: changedetectionio/processors/text_json_diff/processor.py
msgid "Webpage Text/HTML, JSON and PDF changes"
msgstr ""
@@ -3123,7 +2839,7 @@ msgstr ""
msgid "Use"
msgstr ""
#: changedetectionio/templates/_common_fields.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/templates/_common_fields.html
msgid "Show advanced help and tips"
msgstr ""
@@ -3227,26 +2943,6 @@ msgstr ""
msgid "Format for all notifications"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Note"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Discord does not render HTML — switch to"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Plain Text"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "format to avoid"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "and other HTML entities appearing literally in your notifications."
msgstr ""
#: changedetectionio/templates/_helpers.html
msgid "Entry"
msgstr ""
@@ -3363,18 +3059,10 @@ msgstr ""
msgid "Blocked text"
msgstr ""
#: changedetectionio/templates/base.html
msgid "A new version is available"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Search, or Use Alt+S Key"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Share this link:"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Real-time updates offline"
msgstr ""
@@ -3545,6 +3233,10 @@ msgstr ""
msgid "Unmute notifications"
msgstr ""
#: changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr ""
#: changedetectionio/templates/menu.html
msgid "Notifications are muted - click to unmute"
msgstr ""

View File

@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: changedetection.io 0.53.6\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-04-19 00:17+0900\n"
"POT-Creation-Date: 2026-04-11 04:15+0200\n"
"PO-Revision-Date: 2026-03-20 18:13+0100\n"
"Last-Translator: Adrian Gonzalez <adrian@example.com>\n"
"Language: es\n"
@@ -608,15 +608,15 @@ msgstr ""
msgid "Changing this could affect the content of your existing watches, possibly trigger alerts etc."
msgstr "Cambiar esto podría afectar el contenido de sus monitores existentes, posiblemente activar alertas, etc."
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Remove HTML element(s) by CSS and XPath selectors before text conversion."
msgstr "Elimine los elementos HTML mediante los selectores CSS y XPath antes de la conversión de texto."
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Don't paste HTML here, use only CSS and XPath selectors"
msgstr "No pegue HTML aquí, use solo selectores CSS y XPath"
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Add multiple elements, CSS or XPath selectors per line to ignore multiple parts of the HTML."
msgstr "Agregue múltiples elementos, selectores CSS o XPath por línea para ignorar múltiples partes del HTML."
@@ -861,26 +861,6 @@ msgstr "Etiqueta no encontrada"
msgid "Updated"
msgstr "Actualizado"
#: changedetectionio/blueprint/tags/form.py
msgid "Activate for individual watches in this tag/group?"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Auto-apply to watches with URLs matching"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "e.g. *://example.com/* or github.com/myorg"
msgstr ""
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Tag name"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html changedetectionio/blueprint/ui/templates/edit.html
msgid "Filters & Triggers"
msgstr "Filtros y activadores"
@@ -895,6 +875,10 @@ msgstr ""
msgid "Currently matching watches"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Custom colour"
msgstr ""
@@ -982,11 +966,7 @@ msgstr "Nombre de etiqueta/etiqueta"
msgid "No website organisational tags/groups configured"
msgstr "No hay etiquetas/grupos organizativos del sitio web configurados"
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr "Silenciar notificaciones"
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/blueprint/ui/edit.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Edit"
msgstr "Editar"
@@ -1195,14 +1175,6 @@ msgstr ""
msgid "Could not load '{}' processor, processor plugin might be missing."
msgstr "No se pudo cargar el procesador '{}'; es posible que falte el complemento del procesador."
#: changedetectionio/blueprint/ui/edit.py
msgid "System settings default"
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "Default"
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "Updated watch - unpaused!"
msgstr "Monitor actualizado: ¡sin pausa!"
@@ -1215,10 +1187,6 @@ msgstr "Monitor actualizado."
msgid "Preview unavailable - No fetch/check completed or triggers not reached"
msgstr "Vista previa no disponible: no se completó la búsqueda/verificación o no se alcanzaron los activadores"
#: changedetectionio/blueprint/ui/preview.py
msgid "Diff"
msgstr ""
#: changedetectionio/blueprint/ui/templates/clear_all_history.html
msgid "This will remove version history (snapshots) for ALL watches, but keep your list of URLs!"
msgstr "Esto eliminará el historial de versiones (instantáneas) de TODOS los monitores, ¡pero mantendrá su lista de URL!"
@@ -1328,17 +1296,14 @@ msgid "Jump"
msgstr "Saltar"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Text"
msgstr "Texto de error"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Screenshot"
msgstr "Captura de pantalla de error"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Text"
msgstr "Texto"
@@ -1346,8 +1311,7 @@ msgstr "Texto"
msgid "Current screenshot"
msgstr "Captura de pantalla actual"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/processors/extract.py
#: changedetectionio/processors/templates/extract.html
#: changedetectionio/blueprint/ui/templates/diff.html
msgid "Extract Data"
msgstr "Extraer datos"
@@ -1955,26 +1919,6 @@ msgstr "No hay monitores de detección de cambios de página web configuradas; a
msgid "import a list"
msgstr "importar una lista"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Pause checks"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnPause checks"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Mute notification"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnMute notification"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Create a link to share watch config with others"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Detecting restock and price"
msgstr "Detección de reabastecimiento y precio"
@@ -1995,24 +1939,15 @@ msgstr "Precio"
msgid "No information"
msgstr "Sin información"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Checked"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/templates/base.html
msgid "Checking now"
msgstr "Comprobando ahora"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Changed"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Queued"
msgstr "En cola"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
#: changedetectionio/processors/text_json_diff/difference.py
msgid "History"
msgstr "Historia"
@@ -2046,168 +1981,6 @@ msgstr "Vuelva a comprobar todo"
msgid "in '%(title)s'"
msgstr "en '%(title)s'"
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Operator"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Greater Than"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Less Than"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Greater Than or Equal To"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Less Than or Equal To"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Equals"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Not Equals"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Contains"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Field"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Does NOT Contain"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Starts With"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Ends With"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Length minimum"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Length maximum"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Matches Regex"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Does NOT Match Regex"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Extracted number after 'Filters & Triggers'"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Page text after 'Filters & Triggers'"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Field"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Operator"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "A value"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Operator is required."
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Field is required."
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Value is required."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text similarity ratio"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text change distance"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Not enough history to calculate Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Snapshot too large for edit statistics, skipping."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Unable to calculate Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein Text Similarity Details"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Raw distance (edits needed)"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Similarity ratio"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Percent similar"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid ""
"Levenshtein metrics compare the last two snapshots, measuring how many character edits are needed to transform one "
"into the other."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Error calculating Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count of content"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Content Analysis"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count (latest snapshot)"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count is a simple measure of content length, calculated by splitting text on whitespace."
msgstr ""
#: changedetectionio/content_fetchers/requests.py
msgid "Basic fast Plaintext/HTTP Client"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/flask_app.py
#: changedetectionio/realtime/socket_server.py
msgid "Not yet"
@@ -2492,26 +2265,10 @@ msgstr "Operación"
msgid "Selector"
msgstr "Selector"
#: changedetectionio/forms.py
msgid "CSS or xPath selector"
msgstr ""
#: changedetectionio/forms.py
msgid "value"
msgstr "valor"
#: changedetectionio/conditions/form.py changedetectionio/forms.py
msgid "Value"
msgstr ""
#: changedetectionio/forms.py
msgid "Web Page URL"
msgstr ""
#: changedetectionio/forms.py
msgid "Group Tag"
msgstr ""
#: changedetectionio/forms.py
msgid "Time Between Check"
msgstr "Tiempo entre comprobaciones"
@@ -2600,8 +2357,7 @@ msgstr "Bloquear la detección de cambios mientras el texto coincide"
msgid "Execute JavaScript before change detection"
msgstr "Ejecute JavaScript antes de la detección de cambios"
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/forms.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/forms.py
msgid "Save"
msgstr "Guardar"
@@ -2669,7 +2425,7 @@ msgstr "Sintaxis de plantilla no válida:%(error)s"
msgid "Invalid template syntax in \"%(header)s\" header: %(error)s"
msgstr "Sintaxis de plantilla no válida en \"%(header)s\"encabezado:%(error)s"
#: changedetectionio/blueprint/tags/form.py changedetectionio/forms.py
#: changedetectionio/forms.py
msgid "Name"
msgstr "Nombre"
@@ -2765,10 +2521,6 @@ msgstr "Ignorar texto"
msgid "Ignore whitespace"
msgstr "Ignorar espacios en blanco"
#: changedetectionio/forms.py
msgid "Screenshot: Minimum Change Percentage"
msgstr ""
#: changedetectionio/forms.py changedetectionio/processors/image_ssim_diff/forms.py
msgid "Must be between 0 and 100"
msgstr "Debe estar entre 0 y 100"
@@ -2968,42 +2720,6 @@ msgstr "Reabastecimiento y detección de precios para páginas con un ÚNICO pro
msgid "Detects if the product goes back to in-stock"
msgstr "Detecta si el producto vuelve a estar en stock"
#: changedetectionio/processors/templates/extract.html
msgid "Screenshot"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "This tool will extract text data from all of the watch history."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "A <strong>RegEx</strong> is a pattern that identifies exactly which part inside of the text that you want to extract."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "For example, to extract only the numbers from text"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Raw text"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "RegEx to extract:"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Be sure to test your RegEx here."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Each RegEx group bracket"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "will be in its own column, the first column value is always the date."
msgstr ""
#: changedetectionio/processors/text_json_diff/processor.py
msgid "Webpage Text/HTML, JSON and PDF changes"
msgstr "Cambios en el texto/HTML, JSON y PDF de la página web"
@@ -3183,7 +2899,7 @@ msgstr "Lea la wiki de servicios de notificación aquí para obtener notas de co
msgid "Use"
msgstr "Usar"
#: changedetectionio/templates/_common_fields.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/templates/_common_fields.html
msgid "Show advanced help and tips"
msgstr "Mostrar ayuda y consejos avanzados"
@@ -3289,26 +3005,6 @@ msgstr "Para obtener una referencia completa de todos los filtros integrados de
msgid "Format for all notifications"
msgstr "Formato para todas las notificaciones"
#: changedetectionio/templates/_common_fields.html
msgid "Note"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Discord does not render HTML — switch to"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Plain Text"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "format to avoid"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "and other HTML entities appearing literally in your notifications."
msgstr ""
#: changedetectionio/templates/_helpers.html
msgid "Entry"
msgstr "Entrada"
@@ -3427,18 +3123,10 @@ msgstr "No se producirá ninguna detección de cambios porque este texto existe.
msgid "Blocked text"
msgstr "Texto bloqueado"
#: changedetectionio/templates/base.html
msgid "A new version is available"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Search, or Use Alt+S Key"
msgstr "Buscar o usar la tecla Alt+S"
#: changedetectionio/templates/base.html
msgid "Share this link:"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Real-time updates offline"
msgstr "Actualizaciones en tiempo real sin conexión"
@@ -3618,6 +3306,10 @@ msgstr "La programación está en pausa: haga clic para reanudar"
msgid "Unmute notifications"
msgstr "Dejar de silenciar notificaciones"
#: changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr "Silenciar notificaciones"
#: changedetectionio/templates/menu.html
msgid "Notifications are muted - click to unmute"
msgstr "Las notificaciones están silenciadas: haga clic para activar el silencio"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-04-19 00:17+0900\n"
"POT-Creation-Date: 2026-04-11 04:15+0200\n"
"PO-Revision-Date: 2026-01-02 11:40+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: fr\n"
@@ -594,15 +594,15 @@ msgstr ""
msgid "Changing this could affect the content of your existing watches, possibly trigger alerts etc."
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Remove HTML element(s) by CSS and XPath selectors before text conversion."
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Don't paste HTML here, use only CSS and XPath selectors"
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Add multiple elements, CSS or XPath selectors per line to ignore multiple parts of the HTML."
msgstr ""
@@ -833,26 +833,6 @@ msgstr ""
msgid "Updated"
msgstr "Muet"
#: changedetectionio/blueprint/tags/form.py
msgid "Activate for individual watches in this tag/group?"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Auto-apply to watches with URLs matching"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "e.g. *://example.com/* or github.com/myorg"
msgstr ""
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Tag name"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html changedetectionio/blueprint/ui/templates/edit.html
msgid "Filters & Triggers"
msgstr "Filtres et déclencheurs"
@@ -867,6 +847,10 @@ msgstr ""
msgid "Currently matching watches"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Custom colour"
msgstr ""
@@ -952,11 +936,7 @@ msgstr "Nom de l'étiquette/de l'étiquette"
msgid "No website organisational tags/groups configured"
msgstr "Aucun groupe/étiquette configuré"
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr "Désactiver les notifications"
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/blueprint/ui/edit.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Edit"
msgstr "Modifier"
@@ -1159,14 +1139,6 @@ msgstr ""
msgid "Could not load '{}' processor, processor plugin might be missing."
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "System settings default"
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "Default"
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "Updated watch - unpaused!"
msgstr ""
@@ -1179,10 +1151,6 @@ msgstr "Supprimer les montres ?"
msgid "Preview unavailable - No fetch/check completed or triggers not reached"
msgstr ""
#: changedetectionio/blueprint/ui/preview.py
msgid "Diff"
msgstr ""
#: changedetectionio/blueprint/ui/templates/clear_all_history.html
msgid "This will remove version history (snapshots) for ALL watches, but keep your list of URLs!"
msgstr ""
@@ -1292,17 +1260,14 @@ msgid "Jump"
msgstr "Saut"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Text"
msgstr "Texte d'erreur"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Screenshot"
msgstr "Capture d'écran d'erreur"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Text"
msgstr "Texte"
@@ -1310,8 +1275,7 @@ msgstr "Texte"
msgid "Current screenshot"
msgstr "Capture d'écran actuelle"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/processors/extract.py
#: changedetectionio/processors/templates/extract.html
#: changedetectionio/blueprint/ui/templates/diff.html
msgid "Extract Data"
msgstr "Extraire des données"
@@ -1903,26 +1867,6 @@ msgstr "Aucune surveillance de site Web configurée, veuillez ajouter une URL da
msgid "import a list"
msgstr "importer une liste"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Pause checks"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnPause checks"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Mute notification"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnMute notification"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Create a link to share watch config with others"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Detecting restock and price"
msgstr "Détection du réapprovisionnement et du prix"
@@ -1943,24 +1887,15 @@ msgstr "Prix"
msgid "No information"
msgstr "Aucune information"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Checked"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/templates/base.html
msgid "Checking now"
msgstr "Vérifier maintenant"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Changed"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Queued"
msgstr "En file d'attente"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
#: changedetectionio/processors/text_json_diff/difference.py
msgid "History"
msgstr "Historique"
@@ -1994,168 +1929,6 @@ msgstr "Revérifiez tout"
msgid "in '%(title)s'"
msgstr "dans '%(title)s'"
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Operator"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Greater Than"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Less Than"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Greater Than or Equal To"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Less Than or Equal To"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Equals"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Not Equals"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Contains"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Field"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Does NOT Contain"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Starts With"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Ends With"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Length minimum"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Length maximum"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Matches Regex"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Does NOT Match Regex"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Extracted number after 'Filters & Triggers'"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Page text after 'Filters & Triggers'"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Field"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Operator"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "A value"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Operator is required."
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Field is required."
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Value is required."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text similarity ratio"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text change distance"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Not enough history to calculate Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Snapshot too large for edit statistics, skipping."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Unable to calculate Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein Text Similarity Details"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Raw distance (edits needed)"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Similarity ratio"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Percent similar"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid ""
"Levenshtein metrics compare the last two snapshots, measuring how many character edits are needed to transform one "
"into the other."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Error calculating Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count of content"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Content Analysis"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count (latest snapshot)"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count is a simple measure of content length, calculated by splitting text on whitespace."
msgstr ""
#: changedetectionio/content_fetchers/requests.py
msgid "Basic fast Plaintext/HTTP Client"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/flask_app.py
#: changedetectionio/realtime/socket_server.py
msgid "Not yet"
@@ -2440,26 +2213,10 @@ msgstr "Options de l'interface utilisateur"
msgid "Selector"
msgstr "Mode de sélection :"
#: changedetectionio/forms.py
msgid "CSS or xPath selector"
msgstr ""
#: changedetectionio/forms.py
msgid "value"
msgstr "Pause"
#: changedetectionio/conditions/form.py changedetectionio/forms.py
msgid "Value"
msgstr ""
#: changedetectionio/forms.py
msgid "Web Page URL"
msgstr ""
#: changedetectionio/forms.py
msgid "Group Tag"
msgstr ""
#: changedetectionio/forms.py
msgid "Time Between Check"
msgstr "Intervalle de vérification"
@@ -2548,8 +2305,7 @@ msgstr "Bloquer la détection des modifications lorsque le texte correspond"
msgid "Execute JavaScript before change detection"
msgstr "Exécuter JavaScript avant la détection des modifications"
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/forms.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/forms.py
msgid "Save"
msgstr "Sauvegarder"
@@ -2617,7 +2373,7 @@ msgstr "Syntaxe de modèle non valide : %(error)s"
msgid "Invalid template syntax in \"%(header)s\" header: %(error)s"
msgstr ""
#: changedetectionio/blueprint/tags/form.py changedetectionio/forms.py
#: changedetectionio/forms.py
msgid "Name"
msgstr "Nom"
@@ -2713,10 +2469,6 @@ msgstr "Ignorer le texte"
msgid "Ignore whitespace"
msgstr "Ignorer les espaces"
#: changedetectionio/forms.py
msgid "Screenshot: Minimum Change Percentage"
msgstr ""
#: changedetectionio/forms.py changedetectionio/processors/image_ssim_diff/forms.py
msgid "Must be between 0 and 100"
msgstr "Doit être compris entre 0 et 100"
@@ -2916,42 +2668,6 @@ msgstr "Détection de réapprovisionnement et de prix pour les pages avec un SEU
msgid "Detects if the product goes back to in-stock"
msgstr "Détecte si le produit revient en stock"
#: changedetectionio/processors/templates/extract.html
msgid "Screenshot"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "This tool will extract text data from all of the watch history."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "A <strong>RegEx</strong> is a pattern that identifies exactly which part inside of the text that you want to extract."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "For example, to extract only the numbers from text"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Raw text"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "RegEx to extract:"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Be sure to test your RegEx here."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Each RegEx group bracket"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "will be in its own column, the first column value is always the date."
msgstr ""
#: changedetectionio/processors/text_json_diff/processor.py
msgid "Webpage Text/HTML, JSON and PDF changes"
msgstr "Modifications du texte de la page Web/HTML, JSON et PDF"
@@ -3131,7 +2847,7 @@ msgstr ""
msgid "Use"
msgstr "Utiliser"
#: changedetectionio/templates/_common_fields.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/templates/_common_fields.html
msgid "Show advanced help and tips"
msgstr "Afficher l'aide et astuces avancées"
@@ -3235,26 +2951,6 @@ msgstr ""
msgid "Format for all notifications"
msgstr "Format pour toutes les notifications"
#: changedetectionio/templates/_common_fields.html
msgid "Note"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Discord does not render HTML — switch to"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Plain Text"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "format to avoid"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "and other HTML entities appearing literally in your notifications."
msgstr ""
#: changedetectionio/templates/_helpers.html
msgid "Entry"
msgstr ""
@@ -3371,18 +3067,10 @@ msgstr "Aucune détection de changement si ce texte existe."
msgid "Blocked text"
msgstr "Texte bloqué"
#: changedetectionio/templates/base.html
msgid "A new version is available"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Search, or Use Alt+S Key"
msgstr "Recherchez ou utilisez la touche Alt+S"
#: changedetectionio/templates/base.html
msgid "Share this link:"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Real-time updates offline"
msgstr "Mises à jour en temps réel hors ligne"
@@ -3555,6 +3243,10 @@ msgstr ""
msgid "Unmute notifications"
msgstr "Réactiver les notifications"
#: changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr "Désactiver les notifications"
#: changedetectionio/templates/menu.html
msgid "Notifications are muted - click to unmute"
msgstr "Notifications désactivées - cliquez pour réactiver"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-04-19 00:17+0900\n"
"POT-Creation-Date: 2026-04-11 04:15+0200\n"
"PO-Revision-Date: 2026-01-02 15:32+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: it\n"
@@ -592,15 +592,15 @@ msgstr ""
msgid "Changing this could affect the content of your existing watches, possibly trigger alerts etc."
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Remove HTML element(s) by CSS and XPath selectors before text conversion."
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Don't paste HTML here, use only CSS and XPath selectors"
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Add multiple elements, CSS or XPath selectors per line to ignore multiple parts of the HTML."
msgstr ""
@@ -831,26 +831,6 @@ msgstr ""
msgid "Updated"
msgstr "Aggiornato"
#: changedetectionio/blueprint/tags/form.py
msgid "Activate for individual watches in this tag/group?"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Auto-apply to watches with URLs matching"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "e.g. *://example.com/* or github.com/myorg"
msgstr ""
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Tag name"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html changedetectionio/blueprint/ui/templates/edit.html
msgid "Filters & Triggers"
msgstr ""
@@ -865,6 +845,10 @@ msgstr ""
msgid "Currently matching watches"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Custom colour"
msgstr ""
@@ -950,11 +934,7 @@ msgstr ""
msgid "No website organisational tags/groups configured"
msgstr "Nessun gruppo/etichetta configurato"
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr "Disattiva notifiche"
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/blueprint/ui/edit.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Edit"
msgstr "Modifica"
@@ -1157,14 +1137,6 @@ msgstr ""
msgid "Could not load '{}' processor, processor plugin might be missing."
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "System settings default"
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "Default"
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "Updated watch - unpaused!"
msgstr ""
@@ -1177,10 +1149,6 @@ msgstr ""
msgid "Preview unavailable - No fetch/check completed or triggers not reached"
msgstr ""
#: changedetectionio/blueprint/ui/preview.py
msgid "Diff"
msgstr ""
#: changedetectionio/blueprint/ui/templates/clear_all_history.html
msgid "This will remove version history (snapshots) for ALL watches, but keep your list of URLs!"
msgstr ""
@@ -1290,17 +1258,14 @@ msgid "Jump"
msgstr ""
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Text"
msgstr "Testo dell'errore"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Screenshot"
msgstr "Screenshot dell'errore"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Text"
msgstr "Testo"
@@ -1308,8 +1273,7 @@ msgstr "Testo"
msgid "Current screenshot"
msgstr "Screenshot corrente"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/processors/extract.py
#: changedetectionio/processors/templates/extract.html
#: changedetectionio/blueprint/ui/templates/diff.html
msgid "Extract Data"
msgstr ""
@@ -1899,26 +1863,6 @@ msgstr "Nessun monitoraggio configurato, aggiungi un URL nella casella sopra, op
msgid "import a list"
msgstr "importa una lista"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Pause checks"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnPause checks"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Mute notification"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnMute notification"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Create a link to share watch config with others"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Detecting restock and price"
msgstr ""
@@ -1939,24 +1883,15 @@ msgstr "Prezzo"
msgid "No information"
msgstr "Nessuna informazione"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Checked"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/templates/base.html
msgid "Checking now"
msgstr "Controllo in corso"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Changed"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Queued"
msgstr "In coda"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
#: changedetectionio/processors/text_json_diff/difference.py
msgid "History"
msgstr "Cronologia"
@@ -1990,168 +1925,6 @@ msgstr "Controlla tutti"
msgid "in '%(title)s'"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Operator"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Greater Than"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Less Than"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Greater Than or Equal To"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Less Than or Equal To"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Equals"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Not Equals"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Contains"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Field"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Does NOT Contain"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Starts With"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Ends With"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Length minimum"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Length maximum"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Matches Regex"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Does NOT Match Regex"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Extracted number after 'Filters & Triggers'"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Page text after 'Filters & Triggers'"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Field"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Operator"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "A value"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Operator is required."
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Field is required."
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Value is required."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text similarity ratio"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text change distance"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Not enough history to calculate Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Snapshot too large for edit statistics, skipping."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Unable to calculate Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein Text Similarity Details"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Raw distance (edits needed)"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Similarity ratio"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Percent similar"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid ""
"Levenshtein metrics compare the last two snapshots, measuring how many character edits are needed to transform one "
"into the other."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Error calculating Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count of content"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Content Analysis"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count (latest snapshot)"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count is a simple measure of content length, calculated by splitting text on whitespace."
msgstr ""
#: changedetectionio/content_fetchers/requests.py
msgid "Basic fast Plaintext/HTTP Client"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/flask_app.py
#: changedetectionio/realtime/socket_server.py
msgid "Not yet"
@@ -2434,26 +2207,10 @@ msgstr "Operazione"
msgid "Selector"
msgstr "Selettore"
#: changedetectionio/forms.py
msgid "CSS or xPath selector"
msgstr ""
#: changedetectionio/forms.py
msgid "value"
msgstr "valore"
#: changedetectionio/conditions/form.py changedetectionio/forms.py
msgid "Value"
msgstr ""
#: changedetectionio/forms.py
msgid "Web Page URL"
msgstr ""
#: changedetectionio/forms.py
msgid "Group Tag"
msgstr ""
#: changedetectionio/forms.py
msgid "Time Between Check"
msgstr "Intervallo tra controlli"
@@ -2542,8 +2299,7 @@ msgstr "Blocca rilevamento modifiche quando il testo corrisponde"
msgid "Execute JavaScript before change detection"
msgstr "Esegui JavaScript prima del rilevamento"
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/forms.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/forms.py
msgid "Save"
msgstr "Salva"
@@ -2611,7 +2367,7 @@ msgstr "Sintassi template non valida: %(error)s"
msgid "Invalid template syntax in \"%(header)s\" header: %(error)s"
msgstr ""
#: changedetectionio/blueprint/tags/form.py changedetectionio/forms.py
#: changedetectionio/forms.py
msgid "Name"
msgstr "Nome"
@@ -2707,10 +2463,6 @@ msgstr "Ignora testo"
msgid "Ignore whitespace"
msgstr "Ignora spazi"
#: changedetectionio/forms.py
msgid "Screenshot: Minimum Change Percentage"
msgstr ""
#: changedetectionio/forms.py changedetectionio/processors/image_ssim_diff/forms.py
msgid "Must be between 0 and 100"
msgstr "Deve essere tra 0 e 100"
@@ -2910,42 +2662,6 @@ msgstr "Rilevamento disponibilità e prezzi per pagine con UN SINGOLO prodotto"
msgid "Detects if the product goes back to in-stock"
msgstr "Rileva se il prodotto torna disponibile"
#: changedetectionio/processors/templates/extract.html
msgid "Screenshot"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "This tool will extract text data from all of the watch history."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "A <strong>RegEx</strong> is a pattern that identifies exactly which part inside of the text that you want to extract."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "For example, to extract only the numbers from text"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Raw text"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "RegEx to extract:"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Be sure to test your RegEx here."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Each RegEx group bracket"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "will be in its own column, the first column value is always the date."
msgstr ""
#: changedetectionio/processors/text_json_diff/processor.py
msgid "Webpage Text/HTML, JSON and PDF changes"
msgstr "Modifiche testo/HTML, JSON e PDF"
@@ -3125,7 +2841,7 @@ msgstr ""
msgid "Use"
msgstr "Usa"
#: changedetectionio/templates/_common_fields.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/templates/_common_fields.html
msgid "Show advanced help and tips"
msgstr ""
@@ -3229,26 +2945,6 @@ msgstr ""
msgid "Format for all notifications"
msgstr "Formato per tutte le notifiche"
#: changedetectionio/templates/_common_fields.html
msgid "Note"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Discord does not render HTML — switch to"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Plain Text"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "format to avoid"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "and other HTML entities appearing literally in your notifications."
msgstr ""
#: changedetectionio/templates/_helpers.html
msgid "Entry"
msgstr ""
@@ -3365,18 +3061,10 @@ msgstr "Nessuna rilevazione se questo testo esiste."
msgid "Blocked text"
msgstr "Testo bloccato"
#: changedetectionio/templates/base.html
msgid "A new version is available"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Search, or Use Alt+S Key"
msgstr "Cerca, o usa il tasto Alt+S"
#: changedetectionio/templates/base.html
msgid "Share this link:"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Real-time updates offline"
msgstr ""
@@ -3547,6 +3235,10 @@ msgstr ""
msgid "Unmute notifications"
msgstr "Riattiva notifiche"
#: changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr "Disattiva notifiche"
#: changedetectionio/templates/menu.html
msgid "Notifications are muted - click to unmute"
msgstr ""

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: changedetection.io 0.53.6\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-04-19 00:17+0900\n"
"POT-Creation-Date: 2026-04-11 04:15+0200\n"
"PO-Revision-Date: 2026-03-31 23:52+0900\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: ja\n"
@@ -78,7 +78,7 @@ msgstr "ファイルは .zip バックアップファイルでなければなり
#: changedetectionio/blueprint/backups/restore.py
#, python-format
msgid "Backup file is too large (max %(mb)s MB)"
msgstr "バックアップファイルが大きすぎます(最大 %(mb)s MB"
msgstr ""
#: changedetectionio/blueprint/backups/restore.py
msgid "Invalid or corrupted zip file"
@@ -137,7 +137,7 @@ msgstr "注意:これはメインアプリケーションの設定を上書き
#: changedetectionio/blueprint/backups/templates/backup_restore.html
#, python-format
msgid "Max upload size: %(upload)s MB, Max decompressed size: %(decomp)s MB"
msgstr "最大アップロードサイズ: %(upload)s MB、最大解凍サイズ: %(decomp)s MB"
msgstr ""
#: changedetectionio/blueprint/backups/templates/backup_restore.html
msgid "Include all groups found in backup?"
@@ -215,7 +215,7 @@ msgstr ".XLSX & Wachete"
#: changedetectionio/blueprint/imports/templates/import.html
msgid "Backup Restore"
msgstr "バックアップ復元"
msgstr ""
#: changedetectionio/blueprint/imports/templates/import.html
msgid "Restoring changedetection.io backups is in the"
@@ -433,11 +433,10 @@ msgid "After this many consecutive times that the CSS/xPath filter is missing, s
msgstr "CSS/XPath フィルタがこの回数連続して見つからない場合、通知を送信"
# 訳注: "Set to [N] to disable" → 「[N]に設定すると無効になります」
# 述語の訳を後半にまとめた
# 前半は日本語では不要なため、空白1文字で非表示にする空文字は英語にフォールバックするため
# 前半の断片に訳を置くと語順が崩れるため、後半にまとめた
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Set to"
msgstr " "
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "to disable"
@@ -473,7 +472,7 @@ msgstr "すべてのウォッチのデフォルトプロキシを選択"
# 訳注: "Base URL used for the {{base_url}} token in notification links."
# → 「通知リンクの {{base_url}} トークンに使用するベースURL。」
# 修飾語と被修飾語の訳を入れ替えた
# 英語と語順が逆になるため、前後の断片で訳を入れ替えた
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Base URL used for the"
msgstr "通知リンクの"
@@ -522,7 +521,7 @@ msgstr "ページが完全にレンダリングされるのを待つのに問題
# 訳注: "This will wait [n] seconds before extracting the text."
# → 「テキスト抽出前に [n] 秒間待機します。」
# 時間条件と述語の訳を入れ替え
# 前半に文脈、後半に述語を置くよう訳を分担し
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/blueprint/ui/templates/edit.html
msgid "This will wait"
msgstr "テキスト抽出前に"
@@ -573,7 +572,7 @@ msgstr "ブラウザが検出されるすべての方法"
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Connect using Bright Data proxies, find out more here."
msgstr "Bright Data プロキシを使用して接続します。詳細はこちら。"
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/blueprint/ui/templates/diff.html
#: changedetectionio/blueprint/ui/templates/edit.html changedetectionio/templates/_common_fields.html
@@ -600,15 +599,15 @@ msgstr "アンカータグのコンテンツをレンダリング(デフォル
msgid "Changing this could affect the content of your existing watches, possibly trigger alerts etc."
msgstr "これを変更すると、既存のウォッチのコンテンツに影響し、アラートが発生する可能性があります。"
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Remove HTML element(s) by CSS and XPath selectors before text conversion."
msgstr "テキスト変換前に CSS および XPath セレクターで HTML 要素を削除します。"
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Don't paste HTML here, use only CSS and XPath selectors"
msgstr "ここにHTMLを貼り付けないでください。CSSとXPathセレクターのみを使用してください"
msgstr "ここにHTMLを貼り付けないでください。CSSとXPathセレクターのみを使用してください"
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Add multiple elements, CSS or XPath selectors per line to ignore multiple parts of the HTML."
msgstr "1行に1つのCSSまたはXPathセレクターを追加して、HTMLの複数の部分を無視できます。"
@@ -774,7 +773,7 @@ msgstr "ヒント"
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "\"Residential\" and \"Mobile\" proxy type can be more successful than \"Data Center\" for blocked websites."
msgstr "ブロックされたWebサイトには「Residential」や「Mobile」プロキシタイプが「Data Center」より効果的な場合があります。"
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "\"Name\" will be used for selecting the proxy in the Watch Edit settings"
@@ -839,26 +838,6 @@ msgstr "タグが見つかりません"
msgid "Updated"
msgstr "更新しました"
#: changedetectionio/blueprint/tags/form.py
msgid "Activate for individual watches in this tag/group?"
msgstr "このタグ/グループ内の個別ウォッチに対して有効にしますか?"
#: changedetectionio/blueprint/tags/form.py
msgid "Auto-apply to watches with URLs matching"
msgstr "URLが一致するウォッチに自動適用"
#: changedetectionio/blueprint/tags/form.py
msgid "e.g. *://example.com/* or github.com/myorg"
msgstr "例: *://example.com/* や github.com/myorg"
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr "タグの色"
#: changedetectionio/blueprint/tags/form.py
msgid "Tag name"
msgstr "タグ名"
#: changedetectionio/blueprint/tags/templates/edit-tag.html changedetectionio/blueprint/ui/templates/edit.html
msgid "Filters & Triggers"
msgstr "フィルタとトリガー"
@@ -867,34 +846,35 @@ msgstr "フィルタとトリガー"
msgid ""
"Automatically applies this tag to any watch whose URL matches. Supports wildcards: <code>*example.com*</code> or "
"plain substring: <code>github.com/myorg</code>"
msgstr "URLが一致するウォッチにこのタグを自動適用します。ワイルドカード: <code>*example.com*</code> または部分文字列: <code>github.com/myorg</code> に対応"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Currently matching watches"
msgstr "現在マッチしているウォッチ"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Custom colour"
msgstr "カスタム色"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Leave unchecked to use the auto-generated colour based on the tag name."
msgstr "タグ名に基づく自動生成色を使用する場合はチェックを外してください。"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "These settings are"
msgstr "これらの設定は"
# 訳注: "These settings are [added] to any existing watch configurations."
# → 「これらの設定は既存のすべてのウォッチ設定に[追加]されます。」
# 目的語と述語の訳を入れ替えた
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "added"
msgstr "既存のすべてのウォッチ設定に"
msgstr "追加されます"
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "to any existing watch configurations."
msgstr "追加されます。"
msgstr "(既存のすべてのウォッチ設定に)"
#: changedetectionio/blueprint/tags/templates/edit-tag.html changedetectionio/blueprint/ui/templates/edit.html
msgid "Text filtering"
@@ -916,16 +896,13 @@ msgstr "注意!"
msgid "Lookout!"
msgstr "注意!"
# 訳注: "There are" + <a>"system-wide notification URLs enabled"</a> + ", " + ...
# → 「システム全体の通知URLが有効化されています、...」
# 前半は日本語では不要なため、空白1文字で非表示にする空文字は英語にフォールバックするため
#: changedetectionio/blueprint/tags/templates/edit-tag.html changedetectionio/blueprint/ui/templates/edit.html
msgid "There are"
msgstr " "
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html changedetectionio/blueprint/ui/templates/edit.html
msgid "system-wide notification URLs enabled"
msgstr "システム全体の通知URLが有効化されています"
msgstr "件のシステム全体の通知URLが有効化されています"
#: changedetectionio/blueprint/tags/templates/edit-tag.html changedetectionio/blueprint/ui/templates/edit.html
msgid "this form will override notification settings for this watch only"
@@ -964,11 +941,7 @@ msgstr "タグ / ラベル名"
msgid "No website organisational tags/groups configured"
msgstr "ウェブサイトの組織タグ/グループが設定されていません"
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr "通知をミュート"
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/blueprint/ui/edit.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Edit"
msgstr "編集"
@@ -1171,14 +1144,6 @@ msgstr "「{}」プロセッサーを読み込めませんでした。プロセ
msgid "Could not load '{}' processor, processor plugin might be missing."
msgstr "「{}」プロセッサーを読み込めませんでした。プロセッサープラグインが見つからない可能性があります。"
#: changedetectionio/blueprint/ui/edit.py
msgid "System settings default"
msgstr "システム設定のデフォルト"
#: changedetectionio/blueprint/ui/edit.py
msgid "Default"
msgstr "デフォルト"
#: changedetectionio/blueprint/ui/edit.py
msgid "Updated watch - unpaused!"
msgstr "ウォッチを更新しました - 一時停止を解除しました!"
@@ -1191,20 +1156,13 @@ msgstr "ウォッチを更新しました。"
msgid "Preview unavailable - No fetch/check completed or triggers not reached"
msgstr "プレビューを表示できません - 取得/チェックが完了していないか、トリガーに達していません"
#: changedetectionio/blueprint/ui/preview.py
msgid "Diff"
msgstr "差分"
#: changedetectionio/blueprint/ui/templates/clear_all_history.html
msgid "This will remove version history (snapshots) for ALL watches, but keep your list of URLs!"
msgstr "これにより、すべてのウォッチのバージョン履歴スナップショットが削除されますが、URLのリストは保持されます"
# 訳注: "You may like to use the [BACKUP] link first."
# → 「先に[バックアップ]リンクをご利用ください。」
# 副詞と述語の訳を入れ替えた
#: changedetectionio/blueprint/ui/templates/clear_all_history.html
msgid "You may like to use the"
msgstr "先に"
msgstr ""
#: changedetectionio/blueprint/ui/templates/clear_all_history.html
msgid "BACKUP"
@@ -1212,7 +1170,7 @@ msgstr "バックアップ"
#: changedetectionio/blueprint/ui/templates/clear_all_history.html
msgid "link first."
msgstr "リンクをご利用ください。"
msgstr "リンクを先にご利用ください。"
#: changedetectionio/blueprint/ui/templates/clear_all_history.html
msgid "Confirmation text"
@@ -1307,17 +1265,14 @@ msgid "Jump"
msgstr "ジャンプ"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Text"
msgstr "エラーテキスト"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Screenshot"
msgstr "エラースクリーンショット"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Text"
msgstr "テキスト"
@@ -1325,8 +1280,7 @@ msgstr "テキスト"
msgid "Current screenshot"
msgstr "現在のスクリーンショット"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/processors/extract.py
#: changedetectionio/processors/templates/extract.html
#: changedetectionio/blueprint/ui/templates/diff.html
msgid "Extract Data"
msgstr "データを抽出"
@@ -1344,7 +1298,7 @@ msgstr "最新のリクエストからの現在のエラースクリーンショ
# 訳注: "Pro-tip: You can enable [option] from settings."
# → 「プロのヒント:設定から [option] を有効にできます。」
# 修飾語と述語の訳を入れ替え
# "from settings" を前半に移し、述語を後半にまとめ
#: changedetectionio/blueprint/ui/templates/diff.html
msgid "Pro-tip: You can enable"
msgstr "プロのヒント:設定から"
@@ -1423,7 +1377,7 @@ msgstr "メイン一覧ページで使用される組織タグ/グループ名"
#: changedetectionio/blueprint/ui/templates/edit.html
msgid "Also automatically applied by URL pattern:"
msgstr "URLパターンによる自動適用"
msgstr ""
#: changedetectionio/blueprint/ui/templates/edit.html
msgid "Automatically uses the page title if found, you can also use your own title/description here"
@@ -1599,7 +1553,7 @@ msgstr "追加"
# 訳注: "So it's always better to select [X] when you're interested in new content."
# → 「そのため、新しいコンテンツに興味がある場合は [X] を選択することをおすすめします。」
# 条件節と述語の訳を入れ替え
# 英語と語順が逆になるため、条件節を前半に、述語を後半に移し
#: changedetectionio/blueprint/ui/templates/edit.html
msgid "So it's always better to select"
msgstr "そのため、新しいコンテンツに興味がある場合は"
@@ -1926,26 +1880,6 @@ msgstr "ウェブページ変更検知ウォッチが設定されていません
msgid "import a list"
msgstr "リストをインポート"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Pause checks"
msgstr "チェックを一時停止"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnPause checks"
msgstr "チェックを再開"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Mute notification"
msgstr "通知をミュート"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnMute notification"
msgstr "通知のミュートを解除"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Create a link to share watch config with others"
msgstr "ウォッチ設定を他の人と共有するリンクを作成"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Detecting restock and price"
msgstr "在庫補充と価格を検知中"
@@ -1966,24 +1900,15 @@ msgstr "価格"
msgid "No information"
msgstr "情報なし"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Checked"
msgstr "前回チェック"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/templates/base.html
msgid "Checking now"
msgstr "今すぐチェック"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Changed"
msgstr "前回更新"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Queued"
msgstr "キュー済み"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
#: changedetectionio/processors/text_json_diff/difference.py
msgid "History"
msgstr "履歴"
@@ -2017,168 +1942,6 @@ msgstr "すべて再チェック"
msgid "in '%(title)s'"
msgstr "'%(title)s' 内"
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Operator"
msgstr "選択してください - 演算子"
#: changedetectionio/conditions/__init__.py
msgid "Greater Than"
msgstr "より大きい"
#: changedetectionio/conditions/__init__.py
msgid "Less Than"
msgstr "より小さい"
#: changedetectionio/conditions/__init__.py
msgid "Greater Than or Equal To"
msgstr "以上"
#: changedetectionio/conditions/__init__.py
msgid "Less Than or Equal To"
msgstr "以下"
#: changedetectionio/conditions/__init__.py
msgid "Equals"
msgstr "等しい"
#: changedetectionio/conditions/__init__.py
msgid "Not Equals"
msgstr "等しくない"
#: changedetectionio/conditions/__init__.py
msgid "Contains"
msgstr "含む"
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Field"
msgstr "選択してください - フィールド"
#: changedetectionio/conditions/default_plugin.py
msgid "Does NOT Contain"
msgstr "含まない"
#: changedetectionio/conditions/default_plugin.py
msgid "Text Starts With"
msgstr "テキストが次で始まる"
#: changedetectionio/conditions/default_plugin.py
msgid "Text Ends With"
msgstr "テキストが次で終わる"
#: changedetectionio/conditions/default_plugin.py
msgid "Length minimum"
msgstr "文字数の最小値"
#: changedetectionio/conditions/default_plugin.py
msgid "Length maximum"
msgstr "文字数の最大値"
#: changedetectionio/conditions/default_plugin.py
msgid "Text Matches Regex"
msgstr "テキストが正規表現にマッチ"
#: changedetectionio/conditions/default_plugin.py
msgid "Text Does NOT Match Regex"
msgstr "テキストが正規表現にマッチしない"
#: changedetectionio/conditions/default_plugin.py
msgid "Extracted number after 'Filters & Triggers'"
msgstr "'フィルタとトリガー' 後に抽出された数値"
#: changedetectionio/conditions/default_plugin.py
msgid "Page text after 'Filters & Triggers'"
msgstr "'フィルタとトリガー' 後のページテキスト"
#: changedetectionio/conditions/form.py
msgid "Field"
msgstr "フィールド"
#: changedetectionio/conditions/form.py
msgid "Operator"
msgstr "演算子"
#: changedetectionio/conditions/form.py
msgid "A value"
msgstr "値"
#: changedetectionio/conditions/form.py
msgid "Operator is required."
msgstr "演算子は必須です。"
#: changedetectionio/conditions/form.py
msgid "Field is required."
msgstr "フィールドは必須です。"
#: changedetectionio/conditions/form.py
msgid "Value is required."
msgstr "値は必須です。"
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text similarity ratio"
msgstr "レーベンシュタイン - テキスト類似度"
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text change distance"
msgstr "レーベンシュタイン - テキスト変化距離"
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Not enough history to calculate Levenshtein metrics"
msgstr "レーベンシュタイン指標を計算するのに十分な履歴がありません"
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Snapshot too large for edit statistics, skipping."
msgstr "スナップショットが大きすぎるため、編集統計をスキップします。"
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Unable to calculate Levenshtein metrics"
msgstr "レーベンシュタイン指標を計算できません"
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein Text Similarity Details"
msgstr "レーベンシュタイン テキスト類似度の詳細"
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Raw distance (edits needed)"
msgstr "編集距離(必要な編集回数)"
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Similarity ratio"
msgstr "類似度"
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Percent similar"
msgstr "類似度(%"
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid ""
"Levenshtein metrics compare the last two snapshots, measuring how many character edits are needed to transform one "
"into the other."
msgstr "レーベンシュタイン指標は直近2つのスナップショットを比較し、一方を他方に変換するために必要な文字編集回数を測定します。"
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Error calculating Levenshtein metrics"
msgstr "レーベンシュタイン指標の計算中にエラーが発生しました"
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count of content"
msgstr "コンテンツの単語数"
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Content Analysis"
msgstr "コンテンツ分析"
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count (latest snapshot)"
msgstr "単語数(最新のスナップショット)"
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count is a simple measure of content length, calculated by splitting text on whitespace."
msgstr "単語数はコンテンツの長さを示す簡易指標で、テキストを空白で分割して計算されます。"
#: changedetectionio/content_fetchers/requests.py
msgid "Basic fast Plaintext/HTTP Client"
msgstr "シンプルで高速なプレーンテキスト/HTTPクライアント"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/flask_app.py
#: changedetectionio/realtime/socket_server.py
msgid "Not yet"
@@ -2461,26 +2224,10 @@ msgstr "操作"
msgid "Selector"
msgstr "セレクター"
#: changedetectionio/forms.py
msgid "CSS or xPath selector"
msgstr "CSS または xPath セレクター"
#: changedetectionio/forms.py
msgid "value"
msgstr "値"
#: changedetectionio/conditions/form.py changedetectionio/forms.py
msgid "Value"
msgstr "値"
#: changedetectionio/forms.py
msgid "Web Page URL"
msgstr "ウェブページ URL"
#: changedetectionio/forms.py
msgid "Group Tag"
msgstr "グループタグ"
#: changedetectionio/forms.py
msgid "Time Between Check"
msgstr "チェック間隔"
@@ -2499,7 +2246,7 @@ msgstr "要素を削除"
#: changedetectionio/forms.py
msgid "Extract lines containing"
msgstr "指定テキストを含む行を抽出"
msgstr ""
#: changedetectionio/forms.py
msgid "Extract text"
@@ -2539,7 +2286,7 @@ msgstr "テキストをアルファベット順にソート"
#: changedetectionio/forms.py
msgid "Strip ignored lines"
msgstr "無視する行を除"
msgstr "無視行を除"
#: changedetectionio/forms.py
msgid "Trim whitespace before and after text"
@@ -2569,8 +2316,7 @@ msgstr "テキストが一致している間は変更検知をブロック"
msgid "Execute JavaScript before change detection"
msgstr "変更検知前にJavaScriptを実行"
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/forms.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/forms.py
msgid "Save"
msgstr "保存"
@@ -2638,7 +2384,7 @@ msgstr "無効なテンプレート構文: %(error)s"
msgid "Invalid template syntax in \"%(header)s\" header: %(error)s"
msgstr "\"%(header)s\" ヘッダーのテンプレート構文が無効です: %(error)s"
#: changedetectionio/blueprint/tags/form.py changedetectionio/forms.py
#: changedetectionio/forms.py
msgid "Name"
msgstr "名前"
@@ -2734,10 +2480,6 @@ msgstr "無視するテキスト"
msgid "Ignore whitespace"
msgstr "空白を無視"
#: changedetectionio/forms.py
msgid "Screenshot: Minimum Change Percentage"
msgstr "スクリーンショット: 最小変化率"
#: changedetectionio/forms.py changedetectionio/processors/image_ssim_diff/forms.py
msgid "Must be between 0 and 100"
msgstr "0から100の間で指定してください"
@@ -2937,42 +2679,6 @@ msgstr "単一製品ページの在庫補充&価格検知"
msgid "Detects if the product goes back to in-stock"
msgstr "製品が在庫ありに戻ったかどうかを検知します"
#: changedetectionio/processors/templates/extract.html
msgid "Screenshot"
msgstr "スクリーンショット"
#: changedetectionio/processors/templates/extract.html
msgid "This tool will extract text data from all of the watch history."
msgstr "このツールはすべてのウォッチ履歴からテキストデータを抽出します。"
#: changedetectionio/processors/templates/extract.html
msgid "A <strong>RegEx</strong> is a pattern that identifies exactly which part inside of the text that you want to extract."
msgstr "<strong>正規表現</strong> は、抽出したいテキスト内の部分を正確に特定するためのパターンです。"
#: changedetectionio/processors/templates/extract.html
msgid "For example, to extract only the numbers from text"
msgstr "例えば、テキストから数値のみを抽出するには"
#: changedetectionio/processors/templates/extract.html
msgid "Raw text"
msgstr "元のテキスト"
#: changedetectionio/processors/templates/extract.html
msgid "RegEx to extract:"
msgstr "抽出用の正規表現:"
#: changedetectionio/processors/templates/extract.html
msgid "Be sure to test your RegEx here."
msgstr "ここで正規表現をテストしてください。"
#: changedetectionio/processors/templates/extract.html
msgid "Each RegEx group bracket"
msgstr "正規表現の各グループ括弧"
#: changedetectionio/processors/templates/extract.html
msgid "will be in its own column, the first column value is always the date."
msgstr "は独立したカラムとなり、最初のカラムの値は常に日付です。"
#: changedetectionio/processors/text_json_diff/processor.py
msgid "Webpage Text/HTML, JSON and PDF changes"
msgstr "ウェブページのテキスト/HTML、JSONおよびPDFの変更"
@@ -3042,7 +2748,7 @@ msgstr "changedetection.io が生成したプレビューページのURL。"
#: changedetectionio/templates/_common_fields.html
#, python-format
msgid "Date/time of the change, accepts format=, change_datetime(format='%A')', default is '%Y-%m-%d %H:%M:%S %Z'"
msgstr "変更の日時。format= を受け付けます(例: change_datetime(format='%A'))。デフォルトは '%Y-%m-%d %H:%M:%S %Z'"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "The URL of the diff output for the watch."
@@ -3052,16 +2758,13 @@ msgstr "ウォッチの差分出力のURL。"
msgid "The diff output - only changes, additions, and removals"
msgstr "差分出力 - 変更、追加、削除のみ"
# 訳注: "All diff variants accept [codes] args, e.g. [examples]"
# → 「すべての差分バリアントは [codes] 引数を受け付けます。例: [examples]」
# 述語の訳を後半にまとめた
#: changedetectionio/templates/_common_fields.html
msgid "All diff variants accept"
msgstr "すべての差分バリアントは"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "args, e.g."
msgstr "引数を受け付けます。例:"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "The diff output - only changes, additions, and removals —"
@@ -3103,13 +2806,13 @@ msgstr "差分出力 - 統一フォーマットのパッチ"
msgid ""
"Only the changed words/values from the previous version — e.g. the old price. Best when a single value changes per "
"line; multiple changed fragments are joined by newline."
msgstr "前バージョンから変更された単語/値のみ — 例: 旧価格。1行あたり1つの値が変わる場合に最適。複数の変更箇所は改行で結合されます。"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid ""
"Only the changed words/values from the new version — e.g. the new price. Best when a single value changes per line; "
"multiple changed fragments are joined by newline."
msgstr "新バージョンの変更された単語/値のみ — 例: 新価格。1行あたり1つの値が変わる場合に最適。複数の変更箇所は改行で結合されます。"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "The current snapshot text contents value, useful when combined with JSON or CSS filters"
@@ -3121,7 +2824,7 @@ msgstr "フィルタからトリガーを発動させたテキスト"
# 訳注: "Warning: Contents of [token1] and [token2] depend on how the difference algorithm perceives the change."
# → 「警告: [token1] および [token2] の内容は、差分アルゴリズムが変更をどのように認識するかによって異なります。」
# 主語の訳を後半にまとめた
# 述語「の内容は〜異なります」を後半の断片にまとめた
#: changedetectionio/templates/_common_fields.html
msgid "Warning: Contents of"
msgstr "警告:"
@@ -3154,17 +2857,11 @@ msgstr "ほぼすべてのサービスへの通知に対応!"
msgid "Please read the notification services wiki here for important configuration notes"
msgstr "重要な設定に関するメモについては、通知サービスのWikiをこちらでお読みください"
# 訳注: 2箇所で使用される共通フラグメント
# (1) _common_fields.html: "Use" + <a>AppRise Notification URLs</a> + "for notification to just about any service!"
# → 「 AppRise 通知URL ほぼすべてのサービスへの通知に対応!」
# (2) text-options.html: "Use" + <code>//(?aiLmsux))</code> + "type flags (more" + <a>information here</a> + ")"
# → 「 //(?aiLmsux)) タイプフラグを使用できます(詳細 はこちら)」
# 前半は日本語では不要なため、空白1文字で非表示にする空文字は英語にフォールバックするため
#: changedetectionio/templates/_common_fields.html changedetectionio/templates/edit/text-options.html
msgid "Use"
msgstr " "
msgstr "使用:"
#: changedetectionio/templates/_common_fields.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/templates/_common_fields.html
msgid "Show advanced help and tips"
msgstr "詳細なヘルプとヒントを表示"
@@ -3174,7 +2871,7 @@ msgstr "(または"
# 訳注: "[service] only supports a maximum [2,000 characters] of notification text, including the title."
# → 「[service] がサポートする通知テキストは最大 [2,000文字] です(タイトルを含む)。」
# 助詞を補い、目的語と述語の訳を入れ替え
# "only supports a maximum" に主語の助詞「が」を付けて文を成立させ
#: changedetectionio/templates/_common_fields.html
msgid "only supports a maximum"
msgstr "がサポートする通知テキストは最大"
@@ -3213,11 +2910,10 @@ msgstr "詳細なヘルプはこちら"
# 訳注: "Accepts the {{token}} placeholders listed below"
# → 「{{token}} 以下のプレースホルダーを受け付けます」
# 述語の訳を後半にまとめた
# 前半は日本語では不要なため、空白1文字で非表示にする空文字は英語にフォールバックするため
# 前半の断片に訳を置くと語順が崩れるため、後半にまとめた
#: changedetectionio/templates/_common_fields.html
msgid "Accepts the"
msgstr " "
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "placeholders listed below"
@@ -3275,30 +2971,6 @@ msgstr "すべての Jinja2 組み込みフィルタの完全なリファレン
msgid "Format for all notifications"
msgstr "すべての通知のフォーマット"
#: changedetectionio/templates/_common_fields.html
msgid "Note"
msgstr "注意"
# 訳注: "Discord does not render HTML — switch to <Plain Text> format to avoid <&nbsp;> and other HTML entities appearing
# literally in your notifications."
# → 「Discord は HTML をレンダリングしません。プレーンテキスト形式に切り替えて、通知で &nbsp; などの HTML エンティティがそのまま表示されるのを回避してください。」
# 3分割された文をプレースホルダー位置に合わせて再配分
#: changedetectionio/templates/_common_fields.html
msgid "Discord does not render HTML — switch to"
msgstr "Discord は HTML をレンダリングしません。"
#: changedetectionio/templates/_common_fields.html
msgid "Plain Text"
msgstr "プレーンテキスト"
#: changedetectionio/templates/_common_fields.html
msgid "format to avoid"
msgstr " 形式に切り替えて、通知で "
#: changedetectionio/templates/_common_fields.html
msgid "and other HTML entities appearing literally in your notifications."
msgstr " などの HTML エンティティがそのまま表示されるのを回避してください。"
#: changedetectionio/templates/_helpers.html
msgid "Entry"
msgstr "エントリー"
@@ -3341,7 +3013,7 @@ msgstr "playwright 環境変数を有効にする"
# 訳注: "and uncomment the [code] in the [filename] file"
# → 「そして [code] のコメントを [filename] ファイル内で解除してください」
# 目的語と述語の訳を入れ替え
# 3つの断片に訳を分散させて自然な語順にし
#: changedetectionio/templates/_helpers.html
msgid "and uncomment the"
msgstr "そして"
@@ -3418,18 +3090,10 @@ msgstr "このテキストが存在するため、変更検知は実行されま
msgid "Blocked text"
msgstr "ブロックされたテキスト"
#: changedetectionio/templates/base.html
msgid "A new version is available"
msgstr "新しいバージョンが利用可能です"
#: changedetectionio/templates/base.html
msgid "Search, or Use Alt+S Key"
msgstr "検索、またはAlt+Sキーを使用"
#: changedetectionio/templates/base.html
msgid "Share this link:"
msgstr "このリンクを共有:"
#: changedetectionio/templates/base.html
msgid "Real-time updates offline"
msgstr "リアルタイム更新オフライン"
@@ -3454,11 +3118,9 @@ msgstr "検索"
msgid "URL or Title"
msgstr "URLまたはタイトル"
# 訳注: "URL or Title in 'タグ名'" → 「URLまたはタイトル - 'タグ名'」
# 前置詞 "in" を区切り文字に置き換えた
#: changedetectionio/templates/base.html
msgid "in"
msgstr "-"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Enter search term..."
@@ -3512,26 +3174,23 @@ msgstr "ここのすべての行が存在しない必要があります(各行
#: changedetectionio/templates/edit/text-options.html
msgid "Keep only lines that contain any of these words or phrases (plain text, case-insensitive)"
msgstr "これらの単語やフレーズのいずれかを含む行のみを保持(プレーンテキスト、大文字小文字区別なし)"
msgstr ""
#: changedetectionio/templates/edit/text-options.html
msgid "One entry per line — any line in the page text that contains a match is kept"
msgstr "1行に1エントリ — ページテキスト内でマッチを含む行が保持されます"
msgstr ""
#: changedetectionio/templates/edit/text-options.html
msgid "Simpler alternative to regex — use this when you just want lines about a specific topic"
msgstr "正規表現のより簡単な代替手段 — 特定のトピックに関する行だけが必要な場合に使用"
msgstr ""
# 訳注: "Example: enter [celsius] to keep only lines mentioning temperature readings"
# → 「例: [celsius] と入力すると、温度に関する行のみが保持されます」
# 述語の訳を後半にまとめた
#: changedetectionio/templates/edit/text-options.html
msgid "Example: enter"
msgstr "例:"
msgstr ""
#: changedetectionio/templates/edit/text-options.html
msgid "to keep only lines mentioning temperature readings"
msgstr "と入力すると、温度に関する行のみが保持されます"
msgstr ""
#: changedetectionio/templates/edit/text-options.html
msgid "Extracts text in the final output (line by line) after other filters using regular expressions or string match:"
@@ -3547,7 +3206,7 @@ msgstr "行頭の空白を考慮することを忘れないでください"
#: changedetectionio/templates/edit/text-options.html
msgid "type flags (more"
msgstr "タイプフラグを使用できます(詳細"
msgstr "タイプフラグ(詳細"
#: changedetectionio/templates/edit/text-options.html
msgid "information here"
@@ -3605,6 +3264,10 @@ msgstr "スケジューリングは一時停止中 - クリックして再開"
msgid "Unmute notifications"
msgstr "通知のミュートを解除"
#: changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr "通知をミュート"
#: changedetectionio/templates/menu.html
msgid "Notifications are muted - click to unmute"
msgstr "通知はミュート中 - クリックして解除"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-04-19 00:17+0900\n"
"POT-Creation-Date: 2026-04-11 04:15+0200\n"
"PO-Revision-Date: 2026-01-02 11:40+0100\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: ko\n"
@@ -590,15 +590,15 @@ msgstr ""
msgid "Changing this could affect the content of your existing watches, possibly trigger alerts etc."
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Remove HTML element(s) by CSS and XPath selectors before text conversion."
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Don't paste HTML here, use only CSS and XPath selectors"
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Add multiple elements, CSS or XPath selectors per line to ignore multiple parts of the HTML."
msgstr ""
@@ -829,26 +829,6 @@ msgstr ""
msgid "Updated"
msgstr "업데이트됨"
#: changedetectionio/blueprint/tags/form.py
msgid "Activate for individual watches in this tag/group?"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Auto-apply to watches with URLs matching"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "e.g. *://example.com/* or github.com/myorg"
msgstr ""
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Tag name"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html changedetectionio/blueprint/ui/templates/edit.html
msgid "Filters & Triggers"
msgstr "필터 및 트리거"
@@ -863,6 +843,10 @@ msgstr ""
msgid "Currently matching watches"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Custom colour"
msgstr ""
@@ -948,11 +932,7 @@ msgstr "태그/라벨 이름"
msgid "No website organisational tags/groups configured"
msgstr "구성된 그룹/태그 없음"
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr "알림 음소거"
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/blueprint/ui/edit.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Edit"
msgstr "편집하다"
@@ -1155,14 +1135,6 @@ msgstr ""
msgid "Could not load '{}' processor, processor plugin might be missing."
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "System settings default"
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "Default"
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "Updated watch - unpaused!"
msgstr ""
@@ -1175,10 +1147,6 @@ msgstr "모니터가 업데이트되었습니다."
msgid "Preview unavailable - No fetch/check completed or triggers not reached"
msgstr ""
#: changedetectionio/blueprint/ui/preview.py
msgid "Diff"
msgstr ""
#: changedetectionio/blueprint/ui/templates/clear_all_history.html
msgid "This will remove version history (snapshots) for ALL watches, but keep your list of URLs!"
msgstr ""
@@ -1288,17 +1256,14 @@ msgid "Jump"
msgstr "도약"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Text"
msgstr "오류 텍스트"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Screenshot"
msgstr "오류 스크린샷"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Text"
msgstr "텍스트"
@@ -1306,8 +1271,7 @@ msgstr "텍스트"
msgid "Current screenshot"
msgstr "현재 스크린샷"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/processors/extract.py
#: changedetectionio/processors/templates/extract.html
#: changedetectionio/blueprint/ui/templates/diff.html
msgid "Extract Data"
msgstr "데이터 추출"
@@ -1897,26 +1861,6 @@ msgstr "구성된 웹사이트 시계가 없습니다. 위 상자에 URL을 추
msgid "import a list"
msgstr "목록 가져오기"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Pause checks"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnPause checks"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Mute notification"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnMute notification"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Create a link to share watch config with others"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Detecting restock and price"
msgstr "재입고 및 가격 감지"
@@ -1937,24 +1881,15 @@ msgstr "가격"
msgid "No information"
msgstr "정보 없음"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Checked"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/templates/base.html
msgid "Checking now"
msgstr "지금 확인 중"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Changed"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Queued"
msgstr "대기 중"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
#: changedetectionio/processors/text_json_diff/difference.py
msgid "History"
msgstr "기록"
@@ -1988,168 +1923,6 @@ msgstr "모두 다시 확인하세요"
msgid "in '%(title)s'"
msgstr "'%(title)s'에서"
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Operator"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Greater Than"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Less Than"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Greater Than or Equal To"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Less Than or Equal To"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Equals"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Not Equals"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Contains"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Field"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Does NOT Contain"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Starts With"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Ends With"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Length minimum"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Length maximum"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Matches Regex"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Does NOT Match Regex"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Extracted number after 'Filters & Triggers'"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Page text after 'Filters & Triggers'"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Field"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Operator"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "A value"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Operator is required."
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Field is required."
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Value is required."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text similarity ratio"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text change distance"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Not enough history to calculate Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Snapshot too large for edit statistics, skipping."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Unable to calculate Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein Text Similarity Details"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Raw distance (edits needed)"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Similarity ratio"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Percent similar"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid ""
"Levenshtein metrics compare the last two snapshots, measuring how many character edits are needed to transform one "
"into the other."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Error calculating Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count of content"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Content Analysis"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count (latest snapshot)"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count is a simple measure of content length, calculated by splitting text on whitespace."
msgstr ""
#: changedetectionio/content_fetchers/requests.py
msgid "Basic fast Plaintext/HTTP Client"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/flask_app.py
#: changedetectionio/realtime/socket_server.py
msgid "Not yet"
@@ -2432,26 +2205,10 @@ msgstr "작업"
msgid "Selector"
msgstr "선택자"
#: changedetectionio/forms.py
msgid "CSS or xPath selector"
msgstr ""
#: changedetectionio/forms.py
msgid "value"
msgstr "값"
#: changedetectionio/conditions/form.py changedetectionio/forms.py
msgid "Value"
msgstr ""
#: changedetectionio/forms.py
msgid "Web Page URL"
msgstr ""
#: changedetectionio/forms.py
msgid "Group Tag"
msgstr ""
#: changedetectionio/forms.py
msgid "Time Between Check"
msgstr "확인 간격"
@@ -2540,8 +2297,7 @@ msgstr "텍스트가 일치하는 동안 변경 감지 차단"
msgid "Execute JavaScript before change detection"
msgstr "변경 감지 전에 JavaScript 실행"
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/forms.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/forms.py
msgid "Save"
msgstr "구하다"
@@ -2609,7 +2365,7 @@ msgstr "잘못된 템플릿 구문: %(error)s"
msgid "Invalid template syntax in \"%(header)s\" header: %(error)s"
msgstr ""
#: changedetectionio/blueprint/tags/form.py changedetectionio/forms.py
#: changedetectionio/forms.py
msgid "Name"
msgstr "이름"
@@ -2705,10 +2461,6 @@ msgstr "텍스트 무시"
msgid "Ignore whitespace"
msgstr "공백 무시"
#: changedetectionio/forms.py
msgid "Screenshot: Minimum Change Percentage"
msgstr ""
#: changedetectionio/forms.py changedetectionio/processors/image_ssim_diff/forms.py
msgid "Must be between 0 and 100"
msgstr "0에서 100 사이여야 합니다."
@@ -2908,42 +2660,6 @@ msgstr "단일 제품이 포함된 페이지의 재입고 및 가격 감지"
msgid "Detects if the product goes back to in-stock"
msgstr "제품이 다시 재고로 돌아왔는지 감지합니다."
#: changedetectionio/processors/templates/extract.html
msgid "Screenshot"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "This tool will extract text data from all of the watch history."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "A <strong>RegEx</strong> is a pattern that identifies exactly which part inside of the text that you want to extract."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "For example, to extract only the numbers from text"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Raw text"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "RegEx to extract:"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Be sure to test your RegEx here."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Each RegEx group bracket"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "will be in its own column, the first column value is always the date."
msgstr ""
#: changedetectionio/processors/text_json_diff/processor.py
msgid "Webpage Text/HTML, JSON and PDF changes"
msgstr "웹페이지 텍스트/HTML, JSON 및 PDF 변경"
@@ -3123,7 +2839,7 @@ msgstr ""
msgid "Use"
msgstr "사용"
#: changedetectionio/templates/_common_fields.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/templates/_common_fields.html
msgid "Show advanced help and tips"
msgstr "고급 도움말 표시"
@@ -3227,26 +2943,6 @@ msgstr ""
msgid "Format for all notifications"
msgstr "모든 알림 형식"
#: changedetectionio/templates/_common_fields.html
msgid "Note"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Discord does not render HTML — switch to"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Plain Text"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "format to avoid"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "and other HTML entities appearing literally in your notifications."
msgstr ""
#: changedetectionio/templates/_helpers.html
msgid "Entry"
msgstr ""
@@ -3363,18 +3059,10 @@ msgstr "이 텍스트 존재 시 변경 감지 안 함."
msgid "Blocked text"
msgstr ""
#: changedetectionio/templates/base.html
msgid "A new version is available"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Search, or Use Alt+S Key"
msgstr "검색 또는 Alt+S 키 사용"
#: changedetectionio/templates/base.html
msgid "Share this link:"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Real-time updates offline"
msgstr "실시간 업데이트 오프라인"
@@ -3545,6 +3233,10 @@ msgstr ""
msgid "Unmute notifications"
msgstr "알림 음소거 해제"
#: changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr "알림 음소거"
#: changedetectionio/templates/menu.html
msgid "Notifications are muted - click to unmute"
msgstr "알림 음소거됨 - 클릭하여 해제"

View File

@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: changedetection.io 0.54.9\n"
"Project-Id-Version: changedetection.io 0.54.8\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-04-19 00:17+0900\n"
"POT-Creation-Date: 2026-04-11 04:15+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -589,15 +589,15 @@ msgstr ""
msgid "Changing this could affect the content of your existing watches, possibly trigger alerts etc."
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Remove HTML element(s) by CSS and XPath selectors before text conversion."
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Don't paste HTML here, use only CSS and XPath selectors"
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Add multiple elements, CSS or XPath selectors per line to ignore multiple parts of the HTML."
msgstr ""
@@ -828,26 +828,6 @@ msgstr ""
msgid "Updated"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Activate for individual watches in this tag/group?"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Auto-apply to watches with URLs matching"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "e.g. *://example.com/* or github.com/myorg"
msgstr ""
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Tag name"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html changedetectionio/blueprint/ui/templates/edit.html
msgid "Filters & Triggers"
msgstr ""
@@ -862,6 +842,10 @@ msgstr ""
msgid "Currently matching watches"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Custom colour"
msgstr ""
@@ -947,11 +931,7 @@ msgstr ""
msgid "No website organisational tags/groups configured"
msgstr ""
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr ""
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/blueprint/ui/edit.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Edit"
msgstr ""
@@ -1154,14 +1134,6 @@ msgstr ""
msgid "Could not load '{}' processor, processor plugin might be missing."
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "System settings default"
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "Default"
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "Updated watch - unpaused!"
msgstr ""
@@ -1174,10 +1146,6 @@ msgstr ""
msgid "Preview unavailable - No fetch/check completed or triggers not reached"
msgstr ""
#: changedetectionio/blueprint/ui/preview.py
msgid "Diff"
msgstr ""
#: changedetectionio/blueprint/ui/templates/clear_all_history.html
msgid "This will remove version history (snapshots) for ALL watches, but keep your list of URLs!"
msgstr ""
@@ -1287,17 +1255,14 @@ msgid "Jump"
msgstr ""
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Text"
msgstr ""
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Screenshot"
msgstr ""
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Text"
msgstr ""
@@ -1305,8 +1270,7 @@ msgstr ""
msgid "Current screenshot"
msgstr ""
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/processors/extract.py
#: changedetectionio/processors/templates/extract.html
#: changedetectionio/blueprint/ui/templates/diff.html
msgid "Extract Data"
msgstr ""
@@ -1896,26 +1860,6 @@ msgstr ""
msgid "import a list"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Pause checks"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnPause checks"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Mute notification"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnMute notification"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Create a link to share watch config with others"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Detecting restock and price"
msgstr ""
@@ -1936,24 +1880,15 @@ msgstr ""
msgid "No information"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Checked"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/templates/base.html
msgid "Checking now"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Changed"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Queued"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
#: changedetectionio/processors/text_json_diff/difference.py
msgid "History"
msgstr ""
@@ -1987,168 +1922,6 @@ msgstr ""
msgid "in '%(title)s'"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Operator"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Greater Than"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Less Than"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Greater Than or Equal To"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Less Than or Equal To"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Equals"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Not Equals"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Contains"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Field"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Does NOT Contain"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Starts With"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Ends With"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Length minimum"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Length maximum"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Matches Regex"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Does NOT Match Regex"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Extracted number after 'Filters & Triggers'"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Page text after 'Filters & Triggers'"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Field"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Operator"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "A value"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Operator is required."
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Field is required."
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Value is required."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text similarity ratio"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text change distance"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Not enough history to calculate Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Snapshot too large for edit statistics, skipping."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Unable to calculate Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein Text Similarity Details"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Raw distance (edits needed)"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Similarity ratio"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Percent similar"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid ""
"Levenshtein metrics compare the last two snapshots, measuring how many character edits are needed to transform one "
"into the other."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Error calculating Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count of content"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Content Analysis"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count (latest snapshot)"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count is a simple measure of content length, calculated by splitting text on whitespace."
msgstr ""
#: changedetectionio/content_fetchers/requests.py
msgid "Basic fast Plaintext/HTTP Client"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/flask_app.py
#: changedetectionio/realtime/socket_server.py
msgid "Not yet"
@@ -2431,26 +2204,10 @@ msgstr ""
msgid "Selector"
msgstr ""
#: changedetectionio/forms.py
msgid "CSS or xPath selector"
msgstr ""
#: changedetectionio/forms.py
msgid "value"
msgstr ""
#: changedetectionio/conditions/form.py changedetectionio/forms.py
msgid "Value"
msgstr ""
#: changedetectionio/forms.py
msgid "Web Page URL"
msgstr ""
#: changedetectionio/forms.py
msgid "Group Tag"
msgstr ""
#: changedetectionio/forms.py
msgid "Time Between Check"
msgstr ""
@@ -2539,8 +2296,7 @@ msgstr ""
msgid "Execute JavaScript before change detection"
msgstr ""
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/forms.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/forms.py
msgid "Save"
msgstr ""
@@ -2608,7 +2364,7 @@ msgstr ""
msgid "Invalid template syntax in \"%(header)s\" header: %(error)s"
msgstr ""
#: changedetectionio/blueprint/tags/form.py changedetectionio/forms.py
#: changedetectionio/forms.py
msgid "Name"
msgstr ""
@@ -2704,10 +2460,6 @@ msgstr ""
msgid "Ignore whitespace"
msgstr ""
#: changedetectionio/forms.py
msgid "Screenshot: Minimum Change Percentage"
msgstr ""
#: changedetectionio/forms.py changedetectionio/processors/image_ssim_diff/forms.py
msgid "Must be between 0 and 100"
msgstr ""
@@ -2907,42 +2659,6 @@ msgstr ""
msgid "Detects if the product goes back to in-stock"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Screenshot"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "This tool will extract text data from all of the watch history."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "A <strong>RegEx</strong> is a pattern that identifies exactly which part inside of the text that you want to extract."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "For example, to extract only the numbers from text"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Raw text"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "RegEx to extract:"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Be sure to test your RegEx here."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Each RegEx group bracket"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "will be in its own column, the first column value is always the date."
msgstr ""
#: changedetectionio/processors/text_json_diff/processor.py
msgid "Webpage Text/HTML, JSON and PDF changes"
msgstr ""
@@ -3122,7 +2838,7 @@ msgstr ""
msgid "Use"
msgstr ""
#: changedetectionio/templates/_common_fields.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/templates/_common_fields.html
msgid "Show advanced help and tips"
msgstr ""
@@ -3226,26 +2942,6 @@ msgstr ""
msgid "Format for all notifications"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Note"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Discord does not render HTML — switch to"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Plain Text"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "format to avoid"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "and other HTML entities appearing literally in your notifications."
msgstr ""
#: changedetectionio/templates/_helpers.html
msgid "Entry"
msgstr ""
@@ -3362,18 +3058,10 @@ msgstr ""
msgid "Blocked text"
msgstr ""
#: changedetectionio/templates/base.html
msgid "A new version is available"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Search, or Use Alt+S Key"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Share this link:"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Real-time updates offline"
msgstr ""
@@ -3544,6 +3232,10 @@ msgstr ""
msgid "Unmute notifications"
msgstr ""
#: changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr ""
#: changedetectionio/templates/menu.html
msgid "Notifications are muted - click to unmute"
msgstr ""

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: changedetection.io 0.54.8\n"
"Report-Msgid-Bugs-To: mstrey@gmail.com\n"
"POT-Creation-Date: 2026-04-19 00:17+0900\n"
"POT-Creation-Date: 2026-04-11 04:15+0200\n"
"PO-Revision-Date: 2026-04-07 22:00-0300\n"
"Last-Translator: Gemini AI\n"
"Language: pt_BR\n"
@@ -599,15 +599,15 @@ msgstr "Renderizar conteúdo da tag âncora, desativado por padrão. Se ativado,
msgid "Changing this could affect the content of your existing watches, possibly trigger alerts etc."
msgstr "Alterar isso pode afetar o conteúdo dos seus monitoramentos existentes, possivelmente disparando alertas, etc."
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Remove HTML element(s) by CSS and XPath selectors before text conversion."
msgstr "Remover elementos HTML por seletores CSS e XPath antes da conversão de texto."
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Don't paste HTML here, use only CSS and XPath selectors"
msgstr "Não cole HTML aqui, use apenas seletores CSS e XPath"
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Add multiple elements, CSS or XPath selectors per line to ignore multiple parts of the HTML."
msgstr "Adicione múltiplos elementos, seletores CSS ou XPath por linha para ignorar várias partes do HTML."
@@ -848,26 +848,6 @@ msgstr "Tag não encontrada"
msgid "Updated"
msgstr "Atualizado"
#: changedetectionio/blueprint/tags/form.py
msgid "Activate for individual watches in this tag/group?"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Auto-apply to watches with URLs matching"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "e.g. *://example.com/* or github.com/myorg"
msgstr ""
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Tag name"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html changedetectionio/blueprint/ui/templates/edit.html
msgid "Filters & Triggers"
msgstr "Filtros e Gatilhos"
@@ -882,6 +862,10 @@ msgstr ""
msgid "Currently matching watches"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Custom colour"
msgstr ""
@@ -969,11 +953,7 @@ msgstr "Nome da Tag / Rótulo"
msgid "No website organisational tags/groups configured"
msgstr "Nenhum grupo ou tag organizacional configurado"
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr "Silenciar notificações"
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/blueprint/ui/edit.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Edit"
msgstr "Editar"
@@ -1180,14 +1160,6 @@ msgstr ""
msgid "Could not load '{}' processor, processor plugin might be missing."
msgstr "Não foi possível carregar o processador '{}', o plugin pode estar faltando."
#: changedetectionio/blueprint/ui/edit.py
msgid "System settings default"
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "Default"
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "Updated watch - unpaused!"
msgstr "Monitoramento atualizado - retomado!"
@@ -1200,10 +1172,6 @@ msgstr "Monitoramento atualizado."
msgid "Preview unavailable - No fetch/check completed or triggers not reached"
msgstr "Pré-visualização indisponível - Nenhuma busca concluída ou gatilhos não atingidos"
#: changedetectionio/blueprint/ui/preview.py
msgid "Diff"
msgstr ""
#: changedetectionio/blueprint/ui/templates/clear_all_history.html
msgid "This will remove version history (snapshots) for ALL watches, but keep your list of URLs!"
msgstr "Isso removerá o histórico de versões (instantâneos) para TODOS os monitoramentos, mas manterá sua lista de URLs!"
@@ -1313,17 +1281,14 @@ msgid "Jump"
msgstr "Pular"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Text"
msgstr "Texto de Erro"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Screenshot"
msgstr "Screenshot de Erro"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Text"
msgstr "Texto"
@@ -1331,8 +1296,7 @@ msgstr "Texto"
msgid "Current screenshot"
msgstr "Screenshot atual"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/processors/extract.py
#: changedetectionio/processors/templates/extract.html
#: changedetectionio/blueprint/ui/templates/diff.html
msgid "Extract Data"
msgstr "Extrair Dados"
@@ -1930,26 +1894,6 @@ msgstr "Nenhum monitoramento configurado, adicione uma URL na caixa acima ou"
msgid "import a list"
msgstr "importe uma lista"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Pause checks"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnPause checks"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Mute notification"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnMute notification"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Create a link to share watch config with others"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Detecting restock and price"
msgstr "Detectando estoque e preço"
@@ -1970,24 +1914,15 @@ msgstr "Preço"
msgid "No information"
msgstr "Sem informações"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Checked"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/templates/base.html
msgid "Checking now"
msgstr "Verificando agora"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Changed"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Queued"
msgstr "Enfileirado"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
#: changedetectionio/processors/text_json_diff/difference.py
msgid "History"
msgstr "Histórico"
@@ -2021,168 +1956,6 @@ msgstr "Rechecar todos"
msgid "in '%(title)s'"
msgstr "em '%(title)s'"
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Operator"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Greater Than"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Less Than"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Greater Than or Equal To"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Less Than or Equal To"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Equals"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Not Equals"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Contains"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Field"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Does NOT Contain"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Starts With"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Ends With"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Length minimum"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Length maximum"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Matches Regex"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Does NOT Match Regex"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Extracted number after 'Filters & Triggers'"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Page text after 'Filters & Triggers'"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Field"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Operator"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "A value"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Operator is required."
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Field is required."
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Value is required."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text similarity ratio"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text change distance"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Not enough history to calculate Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Snapshot too large for edit statistics, skipping."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Unable to calculate Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein Text Similarity Details"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Raw distance (edits needed)"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Similarity ratio"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Percent similar"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid ""
"Levenshtein metrics compare the last two snapshots, measuring how many character edits are needed to transform one "
"into the other."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Error calculating Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count of content"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Content Analysis"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count (latest snapshot)"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count is a simple measure of content length, calculated by splitting text on whitespace."
msgstr ""
#: changedetectionio/content_fetchers/requests.py
msgid "Basic fast Plaintext/HTTP Client"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/flask_app.py
#: changedetectionio/realtime/socket_server.py
msgid "Not yet"
@@ -2465,26 +2238,10 @@ msgstr "Operação"
msgid "Selector"
msgstr "Seletor"
#: changedetectionio/forms.py
msgid "CSS or xPath selector"
msgstr ""
#: changedetectionio/forms.py
msgid "value"
msgstr "valor"
#: changedetectionio/conditions/form.py changedetectionio/forms.py
msgid "Value"
msgstr ""
#: changedetectionio/forms.py
msgid "Web Page URL"
msgstr ""
#: changedetectionio/forms.py
msgid "Group Tag"
msgstr ""
#: changedetectionio/forms.py
msgid "Time Between Check"
msgstr "Tempo Entre Verificações"
@@ -2573,8 +2330,7 @@ msgstr "Bloquear detecção de mudança enquanto o texto corresponder"
msgid "Execute JavaScript before change detection"
msgstr "Executar JavaScript antes da detecção de mudanças"
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/forms.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/forms.py
msgid "Save"
msgstr "Salvar"
@@ -2642,7 +2398,7 @@ msgstr "Sintaxe de modelo inválida: %(error)s"
msgid "Invalid template syntax in \"%(header)s\" header: %(error)s"
msgstr "Sintaxe de modelo inválida no cabeçalho \"%(header)s\": %(error)s"
#: changedetectionio/blueprint/tags/form.py changedetectionio/forms.py
#: changedetectionio/forms.py
msgid "Name"
msgstr "Nome"
@@ -2738,10 +2494,6 @@ msgstr "Ignorar Texto"
msgid "Ignore whitespace"
msgstr "Ignorar espaços"
#: changedetectionio/forms.py
msgid "Screenshot: Minimum Change Percentage"
msgstr ""
#: changedetectionio/forms.py changedetectionio/processors/image_ssim_diff/forms.py
msgid "Must be between 0 and 100"
msgstr "Deve estar entre 0 e 100"
@@ -2941,42 +2693,6 @@ msgstr "Detecção de Estoque e Preço para páginas com um ÚNICO produto"
msgid "Detects if the product goes back to in-stock"
msgstr "Detecta se o produto volta ao estoque"
#: changedetectionio/processors/templates/extract.html
msgid "Screenshot"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "This tool will extract text data from all of the watch history."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "A <strong>RegEx</strong> is a pattern that identifies exactly which part inside of the text that you want to extract."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "For example, to extract only the numbers from text"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Raw text"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "RegEx to extract:"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Be sure to test your RegEx here."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Each RegEx group bracket"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "will be in its own column, the first column value is always the date."
msgstr ""
#: changedetectionio/processors/text_json_diff/processor.py
msgid "Webpage Text/HTML, JSON and PDF changes"
msgstr "Mudanças em Texto/HTML de páginas, JSON e PDF"
@@ -3156,7 +2872,7 @@ msgstr "Por favor, leia a wiki dos serviços de notificação aqui para notas im
msgid "Use"
msgstr "Use"
#: changedetectionio/templates/_common_fields.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/templates/_common_fields.html
msgid "Show advanced help and tips"
msgstr "Mostrar ajuda avançada e dicas"
@@ -3260,26 +2976,6 @@ msgstr "Para uma referência completa de todos os filtros nativos do Jinja2, os
msgid "Format for all notifications"
msgstr "Formato para todas as notificações"
#: changedetectionio/templates/_common_fields.html
msgid "Note"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Discord does not render HTML — switch to"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Plain Text"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "format to avoid"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "and other HTML entities appearing literally in your notifications."
msgstr ""
#: changedetectionio/templates/_helpers.html
msgid "Entry"
msgstr "Entrada"
@@ -3398,18 +3094,10 @@ msgstr "Nenhuma detecção de mudança ocorrerá porque este texto existe."
msgid "Blocked text"
msgstr "Texto bloqueado"
#: changedetectionio/templates/base.html
msgid "A new version is available"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Search, or Use Alt+S Key"
msgstr "Pesquisar, ou use a tecla Alt+S"
#: changedetectionio/templates/base.html
msgid "Share this link:"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Real-time updates offline"
msgstr "Atualizações em tempo real offline"
@@ -3586,6 +3274,10 @@ msgstr "O agendamento está pausado - clique para retomar"
msgid "Unmute notifications"
msgstr "Reativar notificações"
#: changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr "Silenciar notificações"
#: changedetectionio/templates/menu.html
msgid "Notifications are muted - click to unmute"
msgstr "As notificações estão silenciadas - clique para reativar"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: changedetection.io 0.53.6\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-04-19 00:17+0900\n"
"POT-Creation-Date: 2026-04-11 04:15+0200\n"
"PO-Revision-Date: 2026-04-10 20:38+0300\n"
"Last-Translator: \n"
"Language: tr\n"
@@ -607,15 +607,15 @@ msgstr ""
msgid "Changing this could affect the content of your existing watches, possibly trigger alerts etc."
msgstr "Bunu değiştirmek mevcut izleyicilerinizin içeriğini etkileyebilir, muhtemelen uyarıları vb. tetikleyebilir."
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Remove HTML element(s) by CSS and XPath selectors before text conversion."
msgstr "Metin dönüştürmeden önce HTML öğelerini CSS ve XPath seçicilere göre kaldırın."
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Don't paste HTML here, use only CSS and XPath selectors"
msgstr "Buraya HTML yapıştırmayın, yalnızca CSS ve XPath seçicilerini kullanın"
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Add multiple elements, CSS or XPath selectors per line to ignore multiple parts of the HTML."
msgstr "HTML'nin birden çok bölümünü yoksaymak için satır başına birden çok öğe, CSS veya XPath seçici ekleyin."
@@ -856,26 +856,6 @@ msgstr "Etiket bulunamadı"
msgid "Updated"
msgstr "Güncellendi"
#: changedetectionio/blueprint/tags/form.py
msgid "Activate for individual watches in this tag/group?"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Auto-apply to watches with URLs matching"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "e.g. *://example.com/* or github.com/myorg"
msgstr ""
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Tag name"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html changedetectionio/blueprint/ui/templates/edit.html
msgid "Filters & Triggers"
msgstr "Filtreler ve Tetikleyiciler"
@@ -890,6 +870,10 @@ msgstr ""
msgid "Currently matching watches"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Custom colour"
msgstr ""
@@ -975,11 +959,7 @@ msgstr "Etiket / İsim adı"
msgid "No website organisational tags/groups configured"
msgstr "Yapılandırılmış web sitesi organizasyonel etiketi/grubu yok"
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr "Bildirimleri sessize al"
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/blueprint/ui/edit.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Edit"
msgstr "Düzenle"
@@ -1184,14 +1164,6 @@ msgstr "'{}' işlemcisi yüklenemedi, işlemci eklentisi eksik olabilir. Lütfen
msgid "Could not load '{}' processor, processor plugin might be missing."
msgstr "'{}' işlemcisi yüklenemedi, işlemci eklentisi eksik olabilir."
#: changedetectionio/blueprint/ui/edit.py
msgid "System settings default"
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "Default"
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "Updated watch - unpaused!"
msgstr "İzleyici güncellendi - duraklatma iptal edildi!"
@@ -1204,10 +1176,6 @@ msgstr "İzleyici güncellendi."
msgid "Preview unavailable - No fetch/check completed or triggers not reached"
msgstr "Önizleme kullanılamıyor - Getirme/kontrol tamamlanmadı veya tetikleyicilere ulaşılamadı"
#: changedetectionio/blueprint/ui/preview.py
msgid "Diff"
msgstr ""
#: changedetectionio/blueprint/ui/templates/clear_all_history.html
msgid "This will remove version history (snapshots) for ALL watches, but keep your list of URLs!"
msgstr "Bu işlem TÜM izleyiciler için sürüm geçmişini (anlık görüntüleri) kaldıracak, ancak URL listenizi koruyacaktır!"
@@ -1317,17 +1285,14 @@ msgid "Jump"
msgstr "Atla"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Text"
msgstr "Hata Metni"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Screenshot"
msgstr "Hata Ekran Görüntüsü"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Text"
msgstr "Metin"
@@ -1335,8 +1300,7 @@ msgstr "Metin"
msgid "Current screenshot"
msgstr "Mevcut ekran görüntüsü"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/processors/extract.py
#: changedetectionio/processors/templates/extract.html
#: changedetectionio/blueprint/ui/templates/diff.html
msgid "Extract Data"
msgstr "Veriyi Çıkar"
@@ -1940,26 +1904,6 @@ msgstr "Yapılandırılmış web sayfası değişiklik tespiti izleyicisi yok, l
msgid "import a list"
msgstr "bir listeyi içe aktarın"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Pause checks"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnPause checks"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Mute notification"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnMute notification"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Create a link to share watch config with others"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Detecting restock and price"
msgstr "Yeniden stoklama ve fiyat tespiti"
@@ -1980,24 +1924,15 @@ msgstr "Fiyat"
msgid "No information"
msgstr "Bilgi yok"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Checked"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/templates/base.html
msgid "Checking now"
msgstr "Şimdi kontrol ediliyor"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Changed"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Queued"
msgstr "Sırada"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
#: changedetectionio/processors/text_json_diff/difference.py
msgid "History"
msgstr "Geçmiş"
@@ -2031,168 +1966,6 @@ msgstr "Tümünü yeniden kontrol et"
msgid "in '%(title)s'"
msgstr "'%(title)s' içinde"
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Operator"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Greater Than"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Less Than"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Greater Than or Equal To"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Less Than or Equal To"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Equals"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Not Equals"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Contains"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Field"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Does NOT Contain"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Starts With"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Ends With"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Length minimum"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Length maximum"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Matches Regex"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Does NOT Match Regex"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Extracted number after 'Filters & Triggers'"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Page text after 'Filters & Triggers'"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Field"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Operator"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "A value"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Operator is required."
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Field is required."
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Value is required."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text similarity ratio"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text change distance"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Not enough history to calculate Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Snapshot too large for edit statistics, skipping."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Unable to calculate Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein Text Similarity Details"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Raw distance (edits needed)"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Similarity ratio"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Percent similar"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid ""
"Levenshtein metrics compare the last two snapshots, measuring how many character edits are needed to transform one "
"into the other."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Error calculating Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count of content"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Content Analysis"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count (latest snapshot)"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count is a simple measure of content length, calculated by splitting text on whitespace."
msgstr ""
#: changedetectionio/content_fetchers/requests.py
msgid "Basic fast Plaintext/HTTP Client"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/flask_app.py
#: changedetectionio/realtime/socket_server.py
msgid "Not yet"
@@ -2475,26 +2248,10 @@ msgstr "Operasyon"
msgid "Selector"
msgstr "Seçici"
#: changedetectionio/forms.py
msgid "CSS or xPath selector"
msgstr ""
#: changedetectionio/forms.py
msgid "value"
msgstr "değer"
#: changedetectionio/conditions/form.py changedetectionio/forms.py
msgid "Value"
msgstr ""
#: changedetectionio/forms.py
msgid "Web Page URL"
msgstr ""
#: changedetectionio/forms.py
msgid "Group Tag"
msgstr ""
#: changedetectionio/forms.py
msgid "Time Between Check"
msgstr "Kontrol Arasındaki Süre"
@@ -2583,8 +2340,7 @@ msgstr "Metin eşleşirken değişiklik tespitini engelle"
msgid "Execute JavaScript before change detection"
msgstr "Değişiklik tespitinden önce JavaScript'i çalıştır"
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/forms.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/forms.py
msgid "Save"
msgstr "Kaydet"
@@ -2652,7 +2408,7 @@ msgstr "Geçersiz şablon sözdizimi: %(error)s"
msgid "Invalid template syntax in \"%(header)s\" header: %(error)s"
msgstr "\"%(header)s\" başlığında geçersiz şablon sözdizimi: %(error)s"
#: changedetectionio/blueprint/tags/form.py changedetectionio/forms.py
#: changedetectionio/forms.py
msgid "Name"
msgstr "İsim"
@@ -2748,10 +2504,6 @@ msgstr "Metni Yoksay"
msgid "Ignore whitespace"
msgstr "Boşlukları yoksay"
#: changedetectionio/forms.py
msgid "Screenshot: Minimum Change Percentage"
msgstr ""
#: changedetectionio/forms.py changedetectionio/processors/image_ssim_diff/forms.py
msgid "Must be between 0 and 100"
msgstr "0 ile 100 arasında olmalıdır"
@@ -2951,42 +2703,6 @@ msgstr "TEK bir ürüne sahip sayfalar için Yeniden Stoklama ve Fiyat tespiti"
msgid "Detects if the product goes back to in-stock"
msgstr "Ürünün tekrar stoka girip girmediğini tespit eder"
#: changedetectionio/processors/templates/extract.html
msgid "Screenshot"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "This tool will extract text data from all of the watch history."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "A <strong>RegEx</strong> is a pattern that identifies exactly which part inside of the text that you want to extract."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "For example, to extract only the numbers from text"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Raw text"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "RegEx to extract:"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Be sure to test your RegEx here."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Each RegEx group bracket"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "will be in its own column, the first column value is always the date."
msgstr ""
#: changedetectionio/processors/text_json_diff/processor.py
msgid "Webpage Text/HTML, JSON and PDF changes"
msgstr "Web Sayfası Metin/HTML, JSON ve PDF değişiklikleri"
@@ -3166,7 +2882,7 @@ msgstr "Önemli yapılandırma notları için lütfen buradaki bildirim hizmetle
msgid "Use"
msgstr "Şu"
#: changedetectionio/templates/_common_fields.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/templates/_common_fields.html
msgid "Show advanced help and tips"
msgstr "Gelişmiş yardım ve ipuçlarını göster"
@@ -3270,26 +2986,6 @@ msgstr "Tüm Jinja2 yerleşik filtrelerinin tam bir referansı için kullanıcı
msgid "Format for all notifications"
msgstr "Tüm bildirimler için format"
#: changedetectionio/templates/_common_fields.html
msgid "Note"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Discord does not render HTML — switch to"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Plain Text"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "format to avoid"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "and other HTML entities appearing literally in your notifications."
msgstr ""
#: changedetectionio/templates/_helpers.html
msgid "Entry"
msgstr "Giriş"
@@ -3408,18 +3104,10 @@ msgstr "Bu metin var olduğu için değişiklik tespiti yapılmayacaktır."
msgid "Blocked text"
msgstr "Engellenen metin"
#: changedetectionio/templates/base.html
msgid "A new version is available"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Search, or Use Alt+S Key"
msgstr "Arayın veya Alt+S Tuşunu Kullanın"
#: changedetectionio/templates/base.html
msgid "Share this link:"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Real-time updates offline"
msgstr "Gerçek zamanlı güncellemeler çevrimdışı"
@@ -3598,6 +3286,10 @@ msgstr "Zamanlama duraklatıldı - devam etmek için tıklayın"
msgid "Unmute notifications"
msgstr "Bildirimlerin sesini aç"
#: changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr "Bildirimleri sessize al"
#: changedetectionio/templates/menu.html
msgid "Notifications are muted - click to unmute"
msgstr "Bildirimler sessize alındı - sesini açmak için tıklayın"

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: changedetection.io\n"
"Report-Msgid-Bugs-To: https://github.com/dgtlmoon/changedetection.io\n"
"POT-Creation-Date: 2026-04-19 00:17+0900\n"
"POT-Creation-Date: 2026-04-11 04:15+0200\n"
"PO-Revision-Date: 2026-02-19 12:30+0100\n"
"Last-Translator: \n"
"Language: uk\n"
@@ -589,15 +589,15 @@ msgstr "Відображати вміст тегів посилань. За за
msgid "Changing this could affect the content of your existing watches, possibly trigger alerts etc."
msgstr "Зміна цього параметра може вплинути на вміст ваших завдань та викликати хибні спрацювання."
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Remove HTML element(s) by CSS and XPath selectors before text conversion."
msgstr "Видалити HTML-елемент(и) за допомогою CSS та XPath селекторів перед перетворенням у текст."
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Don't paste HTML here, use only CSS and XPath selectors"
msgstr "Не вставляйте сюди HTML, використовуйте лише CSS та XPath селектори"
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Add multiple elements, CSS or XPath selectors per line to ignore multiple parts of the HTML."
msgstr "Додайте кілька елементів, CSS або XPath селекторів (по одному на рядок), щоб ігнорувати частини HTML."
@@ -836,26 +836,6 @@ msgstr "Тег не знайдено"
msgid "Updated"
msgstr "Оновлено"
#: changedetectionio/blueprint/tags/form.py
msgid "Activate for individual watches in this tag/group?"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Auto-apply to watches with URLs matching"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "e.g. *://example.com/* or github.com/myorg"
msgstr ""
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Tag name"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html changedetectionio/blueprint/ui/templates/edit.html
msgid "Filters & Triggers"
msgstr "Фільтри та Тригери"
@@ -870,6 +850,10 @@ msgstr ""
msgid "Currently matching watches"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Custom colour"
msgstr ""
@@ -955,11 +939,7 @@ msgstr "Ім'я Тегу / Мітки"
msgid "No website organisational tags/groups configured"
msgstr "Організаційні теги/групи сайтів не налаштовані"
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr "Вимкнути сповіщення"
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/blueprint/ui/edit.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Edit"
msgstr "Редагувати"
@@ -1164,14 +1144,6 @@ msgstr "Не вдалося завантажити процесор '{}', мож
msgid "Could not load '{}' processor, processor plugin might be missing."
msgstr "Не вдалося завантажити процесор '{}', можливо плагін відсутній."
#: changedetectionio/blueprint/ui/edit.py
msgid "System settings default"
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "Default"
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "Updated watch - unpaused!"
msgstr "Завдання оновлено — знято з паузи!"
@@ -1184,10 +1156,6 @@ msgstr "Завдання оновлено."
msgid "Preview unavailable - No fetch/check completed or triggers not reached"
msgstr "Попередній перегляд недоступний — перевірка не завершена або тригери не спрацювали"
#: changedetectionio/blueprint/ui/preview.py
msgid "Diff"
msgstr ""
#: changedetectionio/blueprint/ui/templates/clear_all_history.html
msgid "This will remove version history (snapshots) for ALL watches, but keep your list of URLs!"
msgstr "Це видалить історію версій (знімки) для ВСІХ завдань, але збереже ваш список URL!"
@@ -1297,17 +1265,14 @@ msgid "Jump"
msgstr "Перейти"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Text"
msgstr "Текст помилки"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Screenshot"
msgstr "Скріншот помилки"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Text"
msgstr "Текст"
@@ -1315,8 +1280,7 @@ msgstr "Текст"
msgid "Current screenshot"
msgstr "Поточний скріншот"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/processors/extract.py
#: changedetectionio/processors/templates/extract.html
#: changedetectionio/blueprint/ui/templates/diff.html
msgid "Extract Data"
msgstr "Вилучити дані"
@@ -1914,26 +1878,6 @@ msgstr "Немає налаштованих завдань для відстеж
msgid "import a list"
msgstr "імпортуйте список"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Pause checks"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnPause checks"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Mute notification"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnMute notification"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Create a link to share watch config with others"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Detecting restock and price"
msgstr "Визначення наявності та ціни"
@@ -1954,24 +1898,15 @@ msgstr "Ціна"
msgid "No information"
msgstr "Немає інформації"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Checked"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/templates/base.html
msgid "Checking now"
msgstr "Перевірка..."
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Changed"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Queued"
msgstr "В черзі"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
#: changedetectionio/processors/text_json_diff/difference.py
msgid "History"
msgstr "Історія"
@@ -2005,168 +1940,6 @@ msgstr "Перевірити всі"
msgid "in '%(title)s'"
msgstr "в '%(title)s'"
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Operator"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Greater Than"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Less Than"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Greater Than or Equal To"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Less Than or Equal To"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Equals"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Not Equals"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Contains"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Field"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Does NOT Contain"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Starts With"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Ends With"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Length minimum"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Length maximum"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Matches Regex"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Does NOT Match Regex"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Extracted number after 'Filters & Triggers'"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Page text after 'Filters & Triggers'"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Field"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Operator"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "A value"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Operator is required."
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Field is required."
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Value is required."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text similarity ratio"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text change distance"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Not enough history to calculate Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Snapshot too large for edit statistics, skipping."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Unable to calculate Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein Text Similarity Details"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Raw distance (edits needed)"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Similarity ratio"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Percent similar"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid ""
"Levenshtein metrics compare the last two snapshots, measuring how many character edits are needed to transform one "
"into the other."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Error calculating Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count of content"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Content Analysis"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count (latest snapshot)"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count is a simple measure of content length, calculated by splitting text on whitespace."
msgstr ""
#: changedetectionio/content_fetchers/requests.py
msgid "Basic fast Plaintext/HTTP Client"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/flask_app.py
#: changedetectionio/realtime/socket_server.py
msgid "Not yet"
@@ -2449,26 +2222,10 @@ msgstr "Операція"
msgid "Selector"
msgstr "Селектор"
#: changedetectionio/forms.py
msgid "CSS or xPath selector"
msgstr ""
#: changedetectionio/forms.py
msgid "value"
msgstr "значення"
#: changedetectionio/conditions/form.py changedetectionio/forms.py
msgid "Value"
msgstr ""
#: changedetectionio/forms.py
msgid "Web Page URL"
msgstr ""
#: changedetectionio/forms.py
msgid "Group Tag"
msgstr ""
#: changedetectionio/forms.py
msgid "Time Between Check"
msgstr "Час між перевірками"
@@ -2557,8 +2314,7 @@ msgstr "Блокувати виявлення змін, поки текст зб
msgid "Execute JavaScript before change detection"
msgstr "Виконати JavaScript перед виявленням змін"
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/forms.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/forms.py
msgid "Save"
msgstr "Зберегти"
@@ -2626,7 +2382,7 @@ msgstr "Невірний синтаксис шаблону: %(error)s"
msgid "Invalid template syntax in \"%(header)s\" header: %(error)s"
msgstr "Невірний синтаксис шаблону в заголовку \"%(header)s\": %(error)s"
#: changedetectionio/blueprint/tags/form.py changedetectionio/forms.py
#: changedetectionio/forms.py
msgid "Name"
msgstr "Ім'я"
@@ -2722,10 +2478,6 @@ msgstr "Ігнорувати текст"
msgid "Ignore whitespace"
msgstr "Ігнорувати пробіли"
#: changedetectionio/forms.py
msgid "Screenshot: Minimum Change Percentage"
msgstr ""
#: changedetectionio/forms.py changedetectionio/processors/image_ssim_diff/forms.py
msgid "Must be between 0 and 100"
msgstr "Має бути між 0 та 100"
@@ -2925,42 +2677,6 @@ msgstr "Виявлення поповнення та ціни для сторі
msgid "Detects if the product goes back to in-stock"
msgstr "Визначає, чи повернувся товар у наявність"
#: changedetectionio/processors/templates/extract.html
msgid "Screenshot"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "This tool will extract text data from all of the watch history."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "A <strong>RegEx</strong> is a pattern that identifies exactly which part inside of the text that you want to extract."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "For example, to extract only the numbers from text"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Raw text"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "RegEx to extract:"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Be sure to test your RegEx here."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Each RegEx group bracket"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "will be in its own column, the first column value is always the date."
msgstr ""
#: changedetectionio/processors/text_json_diff/processor.py
msgid "Webpage Text/HTML, JSON and PDF changes"
msgstr "Зміни тексту веб-сторінки/HTML, JSON та PDF"
@@ -3140,7 +2856,7 @@ msgstr "Будь ласка, прочитайте вікі по сервісах
msgid "Use"
msgstr "Використовуйте"
#: changedetectionio/templates/_common_fields.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/templates/_common_fields.html
msgid "Show advanced help and tips"
msgstr "Показати розширену довідку та поради"
@@ -3244,26 +2960,6 @@ msgstr "Для повного довідника по всіх вбудован
msgid "Format for all notifications"
msgstr "Формат для всіх сповіщень"
#: changedetectionio/templates/_common_fields.html
msgid "Note"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Discord does not render HTML — switch to"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Plain Text"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "format to avoid"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "and other HTML entities appearing literally in your notifications."
msgstr ""
#: changedetectionio/templates/_helpers.html
msgid "Entry"
msgstr "Запис"
@@ -3380,18 +3076,10 @@ msgstr "Виявлення змін не відбудеться, оскільк
msgid "Blocked text"
msgstr "Блокуючий текст"
#: changedetectionio/templates/base.html
msgid "A new version is available"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Search, or Use Alt+S Key"
msgstr "Пошук, або використовуйте Alt+S"
#: changedetectionio/templates/base.html
msgid "Share this link:"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Real-time updates offline"
msgstr "Оновлення в реальному часі вимкнено"
@@ -3566,6 +3254,10 @@ msgstr "Планування на паузі - натисніть для від
msgid "Unmute notifications"
msgstr "Увімкнути сповіщення"
#: changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr "Вимкнути сповіщення"
#: changedetectionio/templates/menu.html
msgid "Notifications are muted - click to unmute"
msgstr "Сповіщення вимкнено - натисніть для увімкнення"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-04-19 00:17+0900\n"
"POT-Creation-Date: 2026-04-11 04:15+0200\n"
"PO-Revision-Date: 2026-01-18 21:31+0800\n"
"Last-Translator: 吾爱分享 <admin@wuaishare.cn>\n"
"Language: zh\n"
@@ -590,15 +590,15 @@ msgstr "渲染 a 标签内容,默认关闭,开启后链接会呈现为"
msgid "Changing this could affect the content of your existing watches, possibly trigger alerts etc."
msgstr "更改此项可能影响现有监控项内容,可能触发警报等。"
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Remove HTML element(s) by CSS and XPath selectors before text conversion."
msgstr "在文本转换前通过 CSS 和 XPath 选择器移除 HTML 元素。"
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Don't paste HTML here, use only CSS and XPath selectors"
msgstr "不要在此粘贴 HTML仅使用 CSS 和 XPath 选择器"
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Add multiple elements, CSS or XPath selectors per line to ignore multiple parts of the HTML."
msgstr "每行添加多个元素、CSS 或 XPath 选择器,用于忽略 HTML 的多个部分。"
@@ -829,26 +829,6 @@ msgstr "未找到标签"
msgid "Updated"
msgstr "已更新"
#: changedetectionio/blueprint/tags/form.py
msgid "Activate for individual watches in this tag/group?"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Auto-apply to watches with URLs matching"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "e.g. *://example.com/* or github.com/myorg"
msgstr ""
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Tag name"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html changedetectionio/blueprint/ui/templates/edit.html
msgid "Filters & Triggers"
msgstr "过滤器与触发器"
@@ -863,6 +843,10 @@ msgstr ""
msgid "Currently matching watches"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Custom colour"
msgstr ""
@@ -948,11 +932,7 @@ msgstr "标签/名称"
msgid "No website organisational tags/groups configured"
msgstr "未配置分组/标签"
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr "静音通知"
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/blueprint/ui/edit.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Edit"
msgstr "编辑"
@@ -1155,14 +1135,6 @@ msgstr ""
msgid "Could not load '{}' processor, processor plugin might be missing."
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "System settings default"
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "Default"
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "Updated watch - unpaused!"
msgstr "监控项已更新并取消暂停!"
@@ -1175,10 +1147,6 @@ msgstr "监控项已更新。"
msgid "Preview unavailable - No fetch/check completed or triggers not reached"
msgstr "无法预览 - 尚未完成抓取/检查或未满足触发条件"
#: changedetectionio/blueprint/ui/preview.py
msgid "Diff"
msgstr ""
#: changedetectionio/blueprint/ui/templates/clear_all_history.html
msgid "This will remove version history (snapshots) for ALL watches, but keep your list of URLs!"
msgstr "这将删除所有监控项的版本历史(快照),但会保留 URL 列表!"
@@ -1288,17 +1256,14 @@ msgid "Jump"
msgstr "跳转"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Text"
msgstr "错误文本"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Screenshot"
msgstr "错误截图"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Text"
msgstr "文本"
@@ -1306,8 +1271,7 @@ msgstr "文本"
msgid "Current screenshot"
msgstr "当前截图"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/processors/extract.py
#: changedetectionio/processors/templates/extract.html
#: changedetectionio/blueprint/ui/templates/diff.html
msgid "Extract Data"
msgstr "提取数据"
@@ -1897,26 +1861,6 @@ msgstr "尚未配置网站监控项,请在上方输入 URL 或"
msgid "import a list"
msgstr "导入列表"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Pause checks"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnPause checks"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Mute notification"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnMute notification"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Create a link to share watch config with others"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Detecting restock and price"
msgstr "检测补货与价格"
@@ -1937,24 +1881,15 @@ msgstr "价格"
msgid "No information"
msgstr "暂无信息"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Checked"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/templates/base.html
msgid "Checking now"
msgstr "正在检查"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Changed"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Queued"
msgstr "队列中"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
#: changedetectionio/processors/text_json_diff/difference.py
msgid "History"
msgstr "历史"
@@ -1988,168 +1923,6 @@ msgstr "重新检查全部"
msgid "in '%(title)s'"
msgstr "(“%(title)s”中"
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Operator"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Greater Than"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Less Than"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Greater Than or Equal To"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Less Than or Equal To"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Equals"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Not Equals"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Contains"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Field"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Does NOT Contain"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Starts With"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Ends With"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Length minimum"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Length maximum"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Matches Regex"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Does NOT Match Regex"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Extracted number after 'Filters & Triggers'"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Page text after 'Filters & Triggers'"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Field"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Operator"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "A value"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Operator is required."
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Field is required."
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Value is required."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text similarity ratio"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text change distance"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Not enough history to calculate Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Snapshot too large for edit statistics, skipping."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Unable to calculate Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein Text Similarity Details"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Raw distance (edits needed)"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Similarity ratio"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Percent similar"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid ""
"Levenshtein metrics compare the last two snapshots, measuring how many character edits are needed to transform one "
"into the other."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Error calculating Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count of content"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Content Analysis"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count (latest snapshot)"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count is a simple measure of content length, calculated by splitting text on whitespace."
msgstr ""
#: changedetectionio/content_fetchers/requests.py
msgid "Basic fast Plaintext/HTTP Client"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/flask_app.py
#: changedetectionio/realtime/socket_server.py
msgid "Not yet"
@@ -2432,26 +2205,10 @@ msgstr "操作"
msgid "Selector"
msgstr "选择器"
#: changedetectionio/forms.py
msgid "CSS or xPath selector"
msgstr ""
#: changedetectionio/forms.py
msgid "value"
msgstr "值"
#: changedetectionio/conditions/form.py changedetectionio/forms.py
msgid "Value"
msgstr ""
#: changedetectionio/forms.py
msgid "Web Page URL"
msgstr ""
#: changedetectionio/forms.py
msgid "Group Tag"
msgstr ""
#: changedetectionio/forms.py
msgid "Time Between Check"
msgstr "检查间隔"
@@ -2540,8 +2297,7 @@ msgstr "文本匹配时阻止变更检测"
msgid "Execute JavaScript before change detection"
msgstr "在变更检测前执行 JavaScript"
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/forms.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/forms.py
msgid "Save"
msgstr "保存"
@@ -2609,7 +2365,7 @@ msgstr "模板语法无效:%(error)s"
msgid "Invalid template syntax in \"%(header)s\" header: %(error)s"
msgstr "“%(header)s”请求头中的模板语法无效%(error)s"
#: changedetectionio/blueprint/tags/form.py changedetectionio/forms.py
#: changedetectionio/forms.py
msgid "Name"
msgstr "名称"
@@ -2705,10 +2461,6 @@ msgstr "忽略文本"
msgid "Ignore whitespace"
msgstr "忽略空白"
#: changedetectionio/forms.py
msgid "Screenshot: Minimum Change Percentage"
msgstr ""
#: changedetectionio/forms.py changedetectionio/processors/image_ssim_diff/forms.py
msgid "Must be between 0 and 100"
msgstr "必须介于 0 到 100 之间"
@@ -2908,42 +2660,6 @@ msgstr "适用于单一商品页面的补货与价格检测"
msgid "Detects if the product goes back to in-stock"
msgstr "检测商品是否恢复有库存"
#: changedetectionio/processors/templates/extract.html
msgid "Screenshot"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "This tool will extract text data from all of the watch history."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "A <strong>RegEx</strong> is a pattern that identifies exactly which part inside of the text that you want to extract."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "For example, to extract only the numbers from text"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Raw text"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "RegEx to extract:"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Be sure to test your RegEx here."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Each RegEx group bracket"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "will be in its own column, the first column value is always the date."
msgstr ""
#: changedetectionio/processors/text_json_diff/processor.py
msgid "Webpage Text/HTML, JSON and PDF changes"
msgstr "网页文本/HTML、JSON 和 PDF 变更"
@@ -3123,7 +2839,7 @@ msgstr "请阅读通知服务 Wiki 以了解重要配置说明"
msgid "Use"
msgstr "使用"
#: changedetectionio/templates/_common_fields.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/templates/_common_fields.html
msgid "Show advanced help and tips"
msgstr "显示高级帮助和提示"
@@ -3227,26 +2943,6 @@ msgstr "关于 Jinja2 内置过滤器的完整参考,请见"
msgid "Format for all notifications"
msgstr "所有通知的格式"
#: changedetectionio/templates/_common_fields.html
msgid "Note"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Discord does not render HTML — switch to"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Plain Text"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "format to avoid"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "and other HTML entities appearing literally in your notifications."
msgstr ""
#: changedetectionio/templates/_helpers.html
msgid "Entry"
msgstr "条目"
@@ -3363,18 +3059,10 @@ msgstr "此文本存在时将不会进行变更检测。"
msgid "Blocked text"
msgstr "阻止文本"
#: changedetectionio/templates/base.html
msgid "A new version is available"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Search, or Use Alt+S Key"
msgstr "搜索,或使用 Alt+S 快捷键"
#: changedetectionio/templates/base.html
msgid "Share this link:"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Real-time updates offline"
msgstr "实时更新离线"
@@ -3545,6 +3233,10 @@ msgstr "调度已暂停 - 点击恢复"
msgid "Unmute notifications"
msgstr "取消静音通知"
#: changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr "静音通知"
#: changedetectionio/templates/menu.html
msgid "Notifications are muted - click to unmute"
msgstr "通知已静音 - 点击取消静音"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2026-04-19 00:17+0900\n"
"POT-Creation-Date: 2026-04-11 04:15+0200\n"
"PO-Revision-Date: 2026-01-15 12:00+0800\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language: zh_Hant_TW\n"
@@ -590,15 +590,15 @@ msgstr ""
msgid "Changing this could affect the content of your existing watches, possibly trigger alerts etc."
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Remove HTML element(s) by CSS and XPath selectors before text conversion."
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Don't paste HTML here, use only CSS and XPath selectors"
msgstr ""
#: changedetectionio/blueprint/settings/templates/settings.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/blueprint/settings/templates/settings.html
msgid "Add multiple elements, CSS or XPath selectors per line to ignore multiple parts of the HTML."
msgstr ""
@@ -829,26 +829,6 @@ msgstr "找不到標籤"
msgid "Updated"
msgstr "已更新"
#: changedetectionio/blueprint/tags/form.py
msgid "Activate for individual watches in this tag/group?"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Auto-apply to watches with URLs matching"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "e.g. *://example.com/* or github.com/myorg"
msgstr ""
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/form.py
msgid "Tag name"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html changedetectionio/blueprint/ui/templates/edit.html
msgid "Filters & Triggers"
msgstr "過濾器與觸發器"
@@ -863,6 +843,10 @@ msgstr ""
msgid "Currently matching watches"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Tag colour"
msgstr ""
#: changedetectionio/blueprint/tags/templates/edit-tag.html
msgid "Custom colour"
msgstr ""
@@ -948,11 +932,7 @@ msgstr "標籤 / 名稱"
msgid "No website organisational tags/groups configured"
msgstr "未設定群組/標籤"
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr "靜音通知"
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/blueprint/ui/edit.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Edit"
msgstr "編輯"
@@ -1155,14 +1135,6 @@ msgstr ""
msgid "Could not load '{}' processor, processor plugin might be missing."
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "System settings default"
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "Default"
msgstr ""
#: changedetectionio/blueprint/ui/edit.py
msgid "Updated watch - unpaused!"
msgstr "已更新監測任務 - 已取消暫停!"
@@ -1175,10 +1147,6 @@ msgstr "已更新監測任務。"
msgid "Preview unavailable - No fetch/check completed or triggers not reached"
msgstr "預覽無法使用 - 未完成抓取 / 檢查或未觸發"
#: changedetectionio/blueprint/ui/preview.py
msgid "Diff"
msgstr ""
#: changedetectionio/blueprint/ui/templates/clear_all_history.html
msgid "This will remove version history (snapshots) for ALL watches, but keep your list of URLs!"
msgstr "這將移除「所有」監測任務的版本歷史記錄(快照),但保留您的 URL 列表!"
@@ -1288,17 +1256,14 @@ msgid "Jump"
msgstr "跳轉"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Text"
msgstr "錯誤文字"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Error Screenshot"
msgstr "錯誤截圖"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/blueprint/ui/templates/preview.html
#: changedetectionio/processors/templates/extract.html
msgid "Text"
msgstr "文字"
@@ -1306,8 +1271,7 @@ msgstr "文字"
msgid "Current screenshot"
msgstr "目前截圖"
#: changedetectionio/blueprint/ui/templates/diff.html changedetectionio/processors/extract.py
#: changedetectionio/processors/templates/extract.html
#: changedetectionio/blueprint/ui/templates/diff.html
msgid "Extract Data"
msgstr "提取資料"
@@ -1897,26 +1861,6 @@ msgstr "未設定網站監測任務,請在上方欄位新增 URL或"
msgid "import a list"
msgstr "匯入列表"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Pause checks"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnPause checks"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Mute notification"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "UnMute notification"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Create a link to share watch config with others"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Detecting restock and price"
msgstr "檢測補貨與價格"
@@ -1937,24 +1881,15 @@ msgstr "價格"
msgid "No information"
msgstr "無資訊"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Checked"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/templates/base.html
msgid "Checking now"
msgstr "正在檢查"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Last Changed"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
msgid "Queued"
msgstr "已排程"
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html
#: changedetectionio/processors/text_json_diff/difference.py
msgid "History"
msgstr "歷史記錄"
@@ -1988,168 +1923,6 @@ msgstr "複查全部"
msgid "in '%(title)s'"
msgstr "於 '%(title)s'"
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Operator"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Greater Than"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Less Than"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Greater Than or Equal To"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Less Than or Equal To"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Equals"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Not Equals"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Contains"
msgstr ""
#: changedetectionio/conditions/__init__.py
msgid "Choose one - Field"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Does NOT Contain"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Starts With"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Ends With"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Length minimum"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Length maximum"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Matches Regex"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Text Does NOT Match Regex"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Extracted number after 'Filters & Triggers'"
msgstr ""
#: changedetectionio/conditions/default_plugin.py
msgid "Page text after 'Filters & Triggers'"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Field"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Operator"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "A value"
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Operator is required."
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Field is required."
msgstr ""
#: changedetectionio/conditions/form.py
msgid "Value is required."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text similarity ratio"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein - Text change distance"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Not enough history to calculate Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Snapshot too large for edit statistics, skipping."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Unable to calculate Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Levenshtein Text Similarity Details"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Raw distance (edits needed)"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Similarity ratio"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Percent similar"
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid ""
"Levenshtein metrics compare the last two snapshots, measuring how many character edits are needed to transform one "
"into the other."
msgstr ""
#: changedetectionio/conditions/plugins/levenshtein_plugin.py
msgid "Error calculating Levenshtein metrics"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count of content"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Content Analysis"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count (latest snapshot)"
msgstr ""
#: changedetectionio/conditions/plugins/wordcount_plugin.py
msgid "Word count is a simple measure of content length, calculated by splitting text on whitespace."
msgstr ""
#: changedetectionio/content_fetchers/requests.py
msgid "Basic fast Plaintext/HTTP Client"
msgstr ""
#: changedetectionio/blueprint/watchlist/templates/watch-overview.html changedetectionio/flask_app.py
#: changedetectionio/realtime/socket_server.py
msgid "Not yet"
@@ -2432,26 +2205,10 @@ msgstr "操作"
msgid "Selector"
msgstr "選擇器"
#: changedetectionio/forms.py
msgid "CSS or xPath selector"
msgstr ""
#: changedetectionio/forms.py
msgid "value"
msgstr "值"
#: changedetectionio/conditions/form.py changedetectionio/forms.py
msgid "Value"
msgstr ""
#: changedetectionio/forms.py
msgid "Web Page URL"
msgstr ""
#: changedetectionio/forms.py
msgid "Group Tag"
msgstr ""
#: changedetectionio/forms.py
msgid "Time Between Check"
msgstr "檢查間隔"
@@ -2540,8 +2297,7 @@ msgstr "當文字符合時,阻擋變更檢測"
msgid "Execute JavaScript before change detection"
msgstr "在變更檢測前執行 JavaScript"
#: changedetectionio/blueprint/tags/form.py changedetectionio/blueprint/tags/templates/groups-overview.html
#: changedetectionio/forms.py
#: changedetectionio/blueprint/tags/templates/groups-overview.html changedetectionio/forms.py
msgid "Save"
msgstr "儲存"
@@ -2609,7 +2365,7 @@ msgstr "無效的範本語法:%(error)s"
msgid "Invalid template syntax in \"%(header)s\" header: %(error)s"
msgstr "「%(header)s」標頭中的範本語法無效%(error)s"
#: changedetectionio/blueprint/tags/form.py changedetectionio/forms.py
#: changedetectionio/forms.py
msgid "Name"
msgstr "名稱"
@@ -2705,10 +2461,6 @@ msgstr "忽略文字"
msgid "Ignore whitespace"
msgstr "忽略空白"
#: changedetectionio/forms.py
msgid "Screenshot: Minimum Change Percentage"
msgstr ""
#: changedetectionio/forms.py changedetectionio/processors/image_ssim_diff/forms.py
msgid "Must be between 0 and 100"
msgstr "必須介於 0 到 100 之間"
@@ -2908,42 +2660,6 @@ msgstr "針對單一產品頁面的補貨與價格檢測"
msgid "Detects if the product goes back to in-stock"
msgstr "檢測產品是否恢復庫存"
#: changedetectionio/processors/templates/extract.html
msgid "Screenshot"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "This tool will extract text data from all of the watch history."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "A <strong>RegEx</strong> is a pattern that identifies exactly which part inside of the text that you want to extract."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "For example, to extract only the numbers from text"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Raw text"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "RegEx to extract:"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Be sure to test your RegEx here."
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "Each RegEx group bracket"
msgstr ""
#: changedetectionio/processors/templates/extract.html
msgid "will be in its own column, the first column value is always the date."
msgstr ""
#: changedetectionio/processors/text_json_diff/processor.py
msgid "Webpage Text/HTML, JSON and PDF changes"
msgstr "網頁文字 / HTML、JSON 和 PDF 變更"
@@ -3123,7 +2839,7 @@ msgstr ""
msgid "Use"
msgstr "使用"
#: changedetectionio/templates/_common_fields.html changedetectionio/templates/edit/include_subtract.html
#: changedetectionio/templates/_common_fields.html
msgid "Show advanced help and tips"
msgstr "顯示進階說明與提示"
@@ -3227,26 +2943,6 @@ msgstr ""
msgid "Format for all notifications"
msgstr "所有通知的格式"
#: changedetectionio/templates/_common_fields.html
msgid "Note"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Discord does not render HTML — switch to"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "Plain Text"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "format to avoid"
msgstr ""
#: changedetectionio/templates/_common_fields.html
msgid "and other HTML entities appearing literally in your notifications."
msgstr ""
#: changedetectionio/templates/_helpers.html
msgid "Entry"
msgstr ""
@@ -3363,18 +3059,10 @@ msgstr "當文字符合時,阻擋變更檢測"
msgid "Blocked text"
msgstr "阻擋文字"
#: changedetectionio/templates/base.html
msgid "A new version is available"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Search, or Use Alt+S Key"
msgstr "搜尋,或使用 Alt+S 鍵"
#: changedetectionio/templates/base.html
msgid "Share this link:"
msgstr ""
#: changedetectionio/templates/base.html
msgid "Real-time updates offline"
msgstr "離線即時更新"
@@ -3545,6 +3233,10 @@ msgstr ""
msgid "Unmute notifications"
msgstr "取消靜音通知"
#: changedetectionio/templates/menu.html
msgid "Mute notifications"
msgstr "靜音通知"
#: changedetectionio/templates/menu.html
msgid "Notifications are muted - click to unmute"
msgstr "通知已靜音 - 點擊以取消靜音"

View File

@@ -484,8 +484,7 @@ async def async_update_worker(worker_id, q, notification_q, app, datastore, exec
# Store favicon if necessary
if update_handler.fetcher.favicon_blob and update_handler.fetcher.favicon_blob.get('base64'):
watch.bump_favicon(url=update_handler.fetcher.favicon_blob.get('url'),
favicon_base_64=update_handler.fetcher.favicon_blob.get('base64'),
mime_type=update_handler.fetcher.favicon_blob.get('mime_type')
favicon_base_64=update_handler.fetcher.favicon_blob.get('base64')
)
datastore.update_watch(uuid=uuid, update_obj=final_updates)

View File

@@ -40,7 +40,7 @@ orjson~=3.11
# jq not available on Windows so must be installed manually
# Notification library
apprise==1.9.9
apprise==1.9.8
diff_match_patch