From 7c9eb02df481811e716955eb6518b9eb94afeb81 Mon Sep 17 00:00:00 2001 From: dgtlmoon Date: Fri, 3 Apr 2026 07:16:52 +0200 Subject: [PATCH 1/7] Ensure all unit tests are run (#4022) --- .github/workflows/test-stack-reusable-workflow.yml | 6 +----- changedetectionio/tests/unit/test_conditions.py | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test-stack-reusable-workflow.yml b/.github/workflows/test-stack-reusable-workflow.yml index 67cb0535e..f649b9a1c 100644 --- a/.github/workflows/test-stack-reusable-workflow.yml +++ b/.github/workflows/test-stack-reusable-workflow.yml @@ -99,11 +99,7 @@ jobs: - name: Run Unit Tests run: | - docker run test-changedetectionio bash -c 'python3 -m unittest changedetectionio.tests.unit.test_notification_diff' - docker run test-changedetectionio bash -c 'python3 -m unittest changedetectionio.tests.unit.test_watch_model' - docker run test-changedetectionio bash -c 'python3 -m unittest changedetectionio.tests.unit.test_jinja2_security' - docker run test-changedetectionio bash -c 'python3 -m unittest changedetectionio.tests.unit.test_semver' - docker run test-changedetectionio bash -c 'python3 -m unittest changedetectionio.tests.unit.test_html_to_text' + docker run test-changedetectionio bash -c 'cd changedetectionio;pytest tests/unit/' # Basic pytest tests with ancillary services basic-tests: diff --git a/changedetectionio/tests/unit/test_conditions.py b/changedetectionio/tests/unit/test_conditions.py index 00c8c0679..1cfaf87ff 100644 --- a/changedetectionio/tests/unit/test_conditions.py +++ b/changedetectionio/tests/unit/test_conditions.py @@ -64,7 +64,7 @@ class TestTriggerConditions(unittest.TestCase): "conditions": [ {"operator": ">=", "field": "extracted_number", "value": "10"}, {"operator": "<=", "field": "extracted_number", "value": "5000"}, - {"operator": "in", "field": "page_text", "value": "rock"}, + {"operator": "in", "field": "page_filtered_text", "value": "rock"}, #{"operator": "starts_with", "field": "page_text", "value": "I saw"}, ] } From 43bba5a1b688cafa4ba591d0fb749d96f668067f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 3 Apr 2026 07:18:17 +0200 Subject: [PATCH 2/7] Update openapi-core requirement from ~=0.22 to ~=0.23 (#4009) --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index 885c9d11c..124fd2e45 100644 --- a/requirements.txt +++ b/requirements.txt @@ -98,7 +98,7 @@ pytest-flask ~=1.3 pytest-mock ~=3.15 # OpenAPI validation support -openapi-core[flask] ~= 0.22 +openapi-core[flask] ~= 0.23 loguru From 31a760c2147e3e73a403baf6d7de34dc50429c85 Mon Sep 17 00:00:00 2001 From: dgtlmoon Date: Sat, 4 Apr 2026 05:57:35 +0200 Subject: [PATCH 3/7] CVE-2026-35490 - Authentication Bypass via Decorator Ordering --- .../blueprint/backups/__init__.py | 8 +- .../blueprint/backups/restore.py | 4 +- .../blueprint/browser_steps/__init__.py | 6 +- .../tests/unit/test_auth_decorator_order.py | 85 +++++++++++++++++++ 4 files changed, 94 insertions(+), 9 deletions(-) create mode 100644 changedetectionio/tests/unit/test_auth_decorator_order.py diff --git a/changedetectionio/blueprint/backups/__init__.py b/changedetectionio/blueprint/backups/__init__.py index d7600cd67..a3ac3b909 100644 --- a/changedetectionio/blueprint/backups/__init__.py +++ b/changedetectionio/blueprint/backups/__init__.py @@ -98,8 +98,8 @@ def construct_blueprint(datastore: ChangeDetectionStore): backups_blueprint.register_blueprint(construct_restore_blueprint(datastore)) backup_threads = [] - @login_optionally_required @backups_blueprint.route("/request-backup", methods=['GET']) + @login_optionally_required def request_backup(): if any(thread.is_alive() for thread in backup_threads): flash(gettext("A backup is already running, check back in a few minutes"), "error") @@ -141,8 +141,8 @@ def construct_blueprint(datastore: ChangeDetectionStore): return backup_info - @login_optionally_required @backups_blueprint.route("/download/", methods=['GET']) + @login_optionally_required def download_backup(filename): import re filename = filename.strip() @@ -165,9 +165,9 @@ def construct_blueprint(datastore: ChangeDetectionStore): logger.debug(f"Backup download request for '{full_path}'") return send_from_directory(os.path.abspath(datastore.datastore_path), filename, as_attachment=True) - @login_optionally_required @backups_blueprint.route("/", methods=['GET']) @backups_blueprint.route("/create", methods=['GET']) + @login_optionally_required def create(): backups = find_backups() output = render_template("backup_create.html", @@ -176,8 +176,8 @@ def construct_blueprint(datastore: ChangeDetectionStore): ) return output - @login_optionally_required @backups_blueprint.route("/remove-backups", methods=['GET']) + @login_optionally_required def remove_backups(): backup_filepath = os.path.join(datastore.datastore_path, BACKUP_FILENAME_FORMAT.format("*")) diff --git a/changedetectionio/blueprint/backups/restore.py b/changedetectionio/blueprint/backups/restore.py index 425be4748..a0b2360ae 100644 --- a/changedetectionio/blueprint/backups/restore.py +++ b/changedetectionio/blueprint/backups/restore.py @@ -174,8 +174,8 @@ def construct_restore_blueprint(datastore): restore_blueprint = Blueprint('restore', __name__, template_folder="templates") restore_threads = [] - @login_optionally_required @restore_blueprint.route("/restore", methods=['GET']) + @login_optionally_required def restore(): form = RestoreForm() return render_template("backup_restore.html", @@ -184,8 +184,8 @@ def construct_restore_blueprint(datastore): max_upload_mb=_MAX_UPLOAD_BYTES // (1024 * 1024), max_decompressed_mb=_MAX_DECOMPRESSED_BYTES // (1024 * 1024)) - @login_optionally_required @restore_blueprint.route("/restore/start", methods=['POST']) + @login_optionally_required def backups_restore_start(): if any(t.is_alive() for t in restore_threads): flash(gettext("A restore is already running, check back in a few minutes"), "error") diff --git a/changedetectionio/blueprint/browser_steps/__init__.py b/changedetectionio/blueprint/browser_steps/__init__.py index 92289ec2a..8666b3455 100644 --- a/changedetectionio/blueprint/browser_steps/__init__.py +++ b/changedetectionio/blueprint/browser_steps/__init__.py @@ -268,8 +268,8 @@ def construct_blueprint(datastore: ChangeDetectionStore): return browsersteps_start_session - @login_optionally_required @browser_steps_blueprint.route("/browsersteps_start_session", methods=['GET']) + @login_optionally_required def browsersteps_start_session(): # A new session was requested, return sessionID import uuid @@ -304,8 +304,8 @@ def construct_blueprint(datastore: ChangeDetectionStore): logger.debug("Starting connection with playwright - done") return {'browsersteps_session_id': browsersteps_session_id} - @login_optionally_required @browser_steps_blueprint.route("/browsersteps_image", methods=['GET']) + @login_optionally_required def browser_steps_fetch_screenshot_image(): from flask import ( make_response, @@ -330,8 +330,8 @@ def construct_blueprint(datastore: ChangeDetectionStore): return make_response('Unable to fetch image, is the URL correct? does the watch exist? does the step_type-n.jpeg exist?', 401) # A request for an action was received - @login_optionally_required @browser_steps_blueprint.route("/browsersteps_update", methods=['POST']) + @login_optionally_required def browsersteps_ui_update(): import base64 diff --git a/changedetectionio/tests/unit/test_auth_decorator_order.py b/changedetectionio/tests/unit/test_auth_decorator_order.py new file mode 100644 index 000000000..ff8031728 --- /dev/null +++ b/changedetectionio/tests/unit/test_auth_decorator_order.py @@ -0,0 +1,85 @@ +""" +Static analysis test: verify @login_optionally_required is always applied +AFTER (inner to) @blueprint.route(), not before it. + +In Flask, @route() must be the outermost decorator because it registers +whatever function it receives. If @login_optionally_required is placed +above @route(), the raw unprotected function gets registered and auth is +silently bypassed (GHSA-jmrh-xmgh-x9j4). + +Correct order (route outermost, auth inner): + @blueprint.route('/path') + @login_optionally_required + def view(): ... + +Wrong order (auth never called): + @login_optionally_required ← registered by route, then discarded + @blueprint.route('/path') + def view(): ... +""" + +import ast +import pathlib +import pytest + +REPO_ROOT = pathlib.Path(__file__).parents[3] # …/changedetection.io/ +SOURCE_ROOT = REPO_ROOT / "changedetectionio" + + +def _is_route_decorator(node: ast.expr) -> bool: + """Return True if the decorator looks like @something.route(...).""" + return ( + isinstance(node, ast.Call) + and isinstance(node.func, ast.Attribute) + and node.func.attr == "route" + ) + + +def _is_auth_decorator(node: ast.expr) -> bool: + """Return True if the decorator is @login_optionally_required.""" + return isinstance(node, ast.Name) and node.id == "login_optionally_required" + + +def collect_violations() -> list[str]: + violations = [] + + for path in SOURCE_ROOT.rglob("*.py"): + try: + tree = ast.parse(path.read_text(encoding="utf-8"), filename=str(path)) + except SyntaxError: + continue + + for node in ast.walk(tree): + if not isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef)): + continue + + decorators = node.decorator_list + auth_indices = [i for i, d in enumerate(decorators) if _is_auth_decorator(d)] + route_indices = [i for i, d in enumerate(decorators) if _is_route_decorator(d)] + + # Bad order: auth decorator appears at a lower index (higher up) than a route decorator + for auth_idx in auth_indices: + for route_idx in route_indices: + if auth_idx < route_idx: + rel = path.relative_to(REPO_ROOT) + violations.append( + f"{rel}:{node.lineno} — `{node.name}`: " + f"@login_optionally_required (line {decorators[auth_idx].lineno}) " + f"is above @route (line {decorators[route_idx].lineno}); " + f"auth wrapper will never be called" + ) + + return violations + + +def test_auth_decorator_order(): + violations = collect_violations() + if violations: + msg = ( + "\n\nFound routes where @login_optionally_required is placed ABOVE @blueprint.route().\n" + "This silently disables authentication — @route() registers the raw function\n" + "and the auth wrapper is never called.\n\n" + "Fix: move @blueprint.route() to be the outermost (topmost) decorator.\n\n" + + "\n".join(f" • {v}" for v in violations) + ) + pytest.fail(msg) From d74b7d532966e4358ea6f5828a4ec3b32dfa8279 Mon Sep 17 00:00:00 2001 From: dgtlmoon Date: Sat, 4 Apr 2026 06:00:23 +0200 Subject: [PATCH 4/7] 0.54.8 --- changedetectionio/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/changedetectionio/__init__.py b/changedetectionio/__init__.py index 8a0cc8862..d73d55e15 100644 --- a/changedetectionio/__init__.py +++ b/changedetectionio/__init__.py @@ -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.7' +__version__ = '0.54.8' from changedetectionio.strtobool import strtobool from json.decoder import JSONDecodeError From c8f13f5084a7c6d920bf4a0a18e7e59c1a706a57 Mon Sep 17 00:00:00 2001 From: dgtlmoon Date: Sat, 4 Apr 2026 06:11:38 +0200 Subject: [PATCH 5/7] UI - German translation: Visual Filter: "Klare Auswahl" is very misleading #4023 --- .../translations/de/LC_MESSAGES/messages.mo | Bin 49342 -> 49345 bytes .../translations/de/LC_MESSAGES/messages.po | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/changedetectionio/translations/de/LC_MESSAGES/messages.mo b/changedetectionio/translations/de/LC_MESSAGES/messages.mo index 3252710f3d3fd25cddaac86236453df6a8983bac..8a6a05acb302dc9f5dbbaffddc4113807ae7ed96 100644 GIT binary patch delta 4004 zcmXZedvwor9LMnwzp-I1+icj)GGlBmna$i9imeW{)RJrNMoDBCo3FVOvqCgs?i0;* za>-?-GHQ}?&W?(#+niH#D?*)~FQ4yUkI(z_{eC}}_viijZ6|U(B{`nG%>$hV#+aI! z#)M-dY>Nrl6vtp7F2FXp4t=l`$Ky9x2fNKQ#t&0)I1a){JchIJ3Qoacvy9Pv7cdd8 z%`%SZOd}-An1+~!(KrF?<4UZBTQC$qL@zvxTF`l{hyUUr^vyOV7RR9$x(YSndJMuM zY>b~_ZTvCYu>)7q;Y&wNma7E>pfb@7HQ=kL57we4-hz*If+LBqxzBqup59A!9gLcA ztUHf`%FO#XA5W=6sp~z*emDT5h(}^8T#N&8KTbp69Gj7Om_WQ7_5EoKz)Nm?9bqO)W*gLA!Zmmey>aF;TXb`=JMlWy2Fg+2T}2&DB|7S;av$77oqe_Cc7TSc3EH5p z=V(+$GBFaDVrwiy?XVoHW0PEat3pu=>Wo@IPppM0sB7Opm;A@jSVo76;xHObaCS+u@P|!rr>Z?&Fnw*epJ5g zkHH?q@u;JkhTgjW3u)+@<)Q|E7V+1kiK5Aj)4D$7s{{|~jp7Vq05Ohny^ zfv6*ykILW$Y=O5i0E5?)G2Q>RG?c1jRLaMo&U!L7!d3X_NKgx`z^?cYYU20}c7kM7 zO^kQVLS=LXHo�AE2G6YgvX)V;Yy-jw)12?_xdl+GuwafOUyGVnghO8fXA&f-Ibk z3sCQQ71$m6qb6#BI-0hq?-Eht3@sr4DvBv|Ovh8GABx0Hc1KC5cm!&qbPUDGsLbSI z5N=0JeBAXM_98Av9YyG7`#c$6Ax^^(EZ*$!PX&z&bSSmX7Q5rssQY^e^&_7*P2 z$=mIR_fZQB-(hQ}6>8#mRLav(;|;|pF%vy_9JTNgR82Tv(|Cf$PpIOFD6~JVaj29g zqCV_{!T1d7{V}M4w_+szj_uKRr!D60=uJErRb!*DBWAh%`)~yFnqcZBozrlEn` zU{_2+ADo3s>3mcMwxWuy5bNMcxBnd0B0lfN<=B(>2UL+ZrNFe{PS^$eU^3=lAoH72 z8ew?F^J@%J$FzUN)sI&hR zodGnyr7;g<_u4PtkDc&0)Id%5+5cQpFo}33#^X^`W^P~xdhfU2WuuC@*!6oH zPV6~gGdTJH`A?_g4LY>5a;%4UFhwsOv{l>}6{n*n+K27%4Eo?b*J{Of;M!P|{vdn- z!`%MKsG`iqC|poX{#7Kq=xB{asB2S>3HTTKV(cM%?>nR7XHgRj#tAqQRU==aA6{^u zSD=pOI%=VHKeELbgsOo!hsH7*v#>7u9JbXNgvvxHsy_yUuro$tD(dW~y8W|J8(EF| zZY^qoJJ27CP&+R{ZJ-nfp>v7GFdB~^Asv{98!+go{jeAViO--0{1F@AFW3qHMorlE zn7y{$Q48ybdVc_F=fhAFk3(%}Dz?)7pG%_&9lJ3WKgarb8+E@uAKM9ha42yj?0^~A z9t$x6%P|fc9JhZvp27&?v8bb6gnEBJYTOEJqx=6m4XrfjguS0(7*G5%>cd>r1V>QU z@CJrp=t+B>67ezOmoOM-pzi-l9E0CsOYC~ezCQ}XiE}VQD=9dzq-aRwkoIWD` PwUtFPf)6y$%uoIwYx0Sv delta 4006 zcmXZfdvwor9LMpGw%KNOGn;Kj%S@ZmW^68z>!?_26eii!kh9h?wzXkjqjDD_mkh&1 zbBX1Wm{wVev~tdlluTuvQ>#?E&^hY)^7;Pt_`E;g@Aq?gf8L+ps4erTDf4)%bExBQ zjA>bHOh;^s_hC=G8>e6>F2L@%0e!FzpT*D65BruF6O3t?h2t;=k6|f(jrllnjxj-a z9{b>xImR)4X@t*Za?HRuoQ8q83Vm@KM&X<2i65aBbPfaX7G|RFJY%}yGpL2GMoqX0 z!>|g&@qKKCU(Ivuz)f_tro)5fY5_s0O!P$!I34xDI@HA5@Xk(f3h@>9`4Gm_d+Dy@ zQ4>Dx&NCO4nT_}&o^)s^bwlRc565CG@nnq0mv90ez(Vvbvl*F>sl-cB-`8RYUU1_d zFoF0cY6GzgjA?@zs3XroZ**qSPzvXu23U%EaSL|DgIIv|sFe?2Xg{2R9>n=>T!=cV zQq*{h(F@n(87#+WoXWOUQ;U%I98*q%XJ#*s!laidIGl%M)tHwlNN_L>t5GYziCS=r zMK%sa#T`&Z*#p<$08}m2qiUcLb%cN8aOO9$i)}|P4(Gup)QeY9XZ#PgMBgQxBL<;T zIvcg)3XH@m)KS!-Ctk!Jco_#`;8J5c<7ia>Yz$_8vx`P=Jcd4a9q+-LI1Jk_vlC@u zFX9=f_qL*HU^lMEE9i|y%Wcs)IDmKqY6A_Z?=GW`rU@N&G`kP}M4kO@RMiHruoHAe zUC(S(MhYm{`KG$I`qK~ z?1s Y(C?s^9?Bk?g<@cpCHYJA4!~sI)*mM}1$7t*{Zbz@P9*yn)*2W3Q4;oaWF_ zv3-ou*od95#af%%&Zvn;qxxr}cDNSX;9eYrr*IUSbu1dv@d=!UI+7Yp#9BB04f_#0 zH)!;yk@%W57gLG%pdU7(7SN3O7(k`9#xm5-R-z_ckE)r2s3ZCWm8p6R#$PZU%?7)$ zN05v;rjo|J^dCkIcp0Z+6F!9L8*LG-M-99cW3dvokh2(y7g5Fa3&!I=sP{W`-gC`AwAk5H*Ri(2@^wnvzPx)o2L zj-(8g!SmP!uVVrg*HyHMBiEIQ#dF1Q`dsFdEo0Bo_7~e^mSwYN8yB!aP)FmSGs~ zKuvty^$ZRnZa^JH#CH397)~b6!1j1(yJO5g8t3UyYUl2-J6?mWh^tXA)}V^!5^Ci? zqB8U!s@MW{+VA?{-NX~zxES>Vw+Z90&h=M}Ar5yc?T-4RCYpdMk^;=Y&8XD=ii)B@YTVQZ!fYT{&6$}>>oW#UjQL=QZUT6hhrCY(=cJV4_cRPl7!ZGT#mP$^A8 zeK-^&aRlo9DX4)fFb1z-68i43#oQ0QiN~XAEDL*KvD?2NvvvQE(3s7G@HdSq!4;@f z`&8L$7mnI#HmcflQ9CF_Ph5dsxW;t@b|T(_cVR86Wy}kH2UD5uD4M~<9*ovZiL_%;z(3~ z9;zryFcudaCjTmu-E?%tD%7=Uz*PJlTVwnYd+$?G@knfm<8cN~M%BnC7>wuL=Z&bN z`2n@iR!40yhM;O7$)T~F#tZ0=UdL>8hM+PLf$ERLFigc5Oh=vlOt*gyY9nh<->pL} za3{9GD%8$vP#dVjOmr^Lc#6h-@9>`uT!C9K zw*62Gdl>cpSk%rZq9%R@wV|09ulw)Nh@fK+cEb-a5U-=|w>e=a@WM%iZ7~`1F$pU% z6&tW8`k%CaI|gGk@zbcIeG&Ek0o1sS*j@Mk8V#*9q{iOQNK7Gq9QENc)C5OR*YIa- zj}fQrbxOf|h{s?g7NG9`D$Kzz@Lufmo_#+HI}(>-v{q7Hy`=NJvHl}-v-5MJ2N%pL N%ATHE9ada5;(uRwh#&v} diff --git a/changedetectionio/translations/de/LC_MESSAGES/messages.po b/changedetectionio/translations/de/LC_MESSAGES/messages.po index 338fae13a..ee09dea03 100644 --- a/changedetectionio/translations/de/LC_MESSAGES/messages.po +++ b/changedetectionio/translations/de/LC_MESSAGES/messages.po @@ -1617,7 +1617,7 @@ msgstr "Bereich zeichnen" #: changedetectionio/blueprint/ui/templates/edit.html msgid "Clear selection" -msgstr "Klare Auswahl" +msgstr "Auswahl löschen" #: changedetectionio/blueprint/ui/templates/edit.html msgid "One moment, fetching screenshot and element information.." From 84d97ec9cf1bf77523fc6c13d451b6ed2f3807a0 Mon Sep 17 00:00:00 2001 From: skkzsh Date: Sun, 5 Apr 2026 14:55:58 +0900 Subject: [PATCH 6/7] Add Japanese translation (ja) (#4019) --- changedetectionio/languages.py | 1 + changedetectionio/translations/README.md | 1 + .../translations/ja/LC_MESSAGES/messages.mo | Bin 0 -> 78327 bytes .../translations/ja/LC_MESSAGES/messages.po | 3418 +++++++++++++++++ 4 files changed, 3420 insertions(+) create mode 100644 changedetectionio/translations/ja/LC_MESSAGES/messages.mo create mode 100644 changedetectionio/translations/ja/LC_MESSAGES/messages.po diff --git a/changedetectionio/languages.py b/changedetectionio/languages.py index 782810014..f5915934f 100644 --- a/changedetectionio/languages.py +++ b/changedetectionio/languages.py @@ -37,6 +37,7 @@ def get_timeago_locale(flask_locale): 'no': 'nb_NO', # Norwegian Bokmål 'hi': 'in_HI', # Hindi 'cs': 'en', # Czech not supported by timeago, fallback to English + 'ja': 'ja', # Japanese 'uk': 'uk', # Ukrainian 'en_GB': 'en', # British English - timeago uses 'en' 'en_US': 'en', # American English - timeago uses 'en' diff --git a/changedetectionio/translations/README.md b/changedetectionio/translations/README.md index e8b296aed..692883dfc 100644 --- a/changedetectionio/translations/README.md +++ b/changedetectionio/translations/README.md @@ -76,6 +76,7 @@ These commands read settings from `../../setup.cfg` automatically. - `en_US` - English (US) - `fr` - French (Français) - `it` - Italian (Italiano) +- `ja` - Japanese (日本語) - `ko` - Korean (한국어) - `zh` - Chinese Simplified (中文简体) - `zh_Hant_TW` - Chinese Traditional (繁體中文) diff --git a/changedetectionio/translations/ja/LC_MESSAGES/messages.mo b/changedetectionio/translations/ja/LC_MESSAGES/messages.mo new file mode 100644 index 0000000000000000000000000000000000000000..a82b79744f84f66105f742007253393d65fc6001 GIT binary patch literal 78327 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, 2026. +# +msgid "" +msgstr "" +"Project-Id-Version: changedetection.io 0.53.6\n" +"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" +"POT-Creation-Date: 2026-02-23 03:54+0100\n" +"PO-Revision-Date: 2026-03-31 23:52+0900\n" +"Last-Translator: FULL NAME \n" +"Language: ja\n" +"Language-Team: ja \n" +"Plural-Forms: nplurals=1; plural=0;\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=utf-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: Babel 2.18.0\n" + +#: changedetectionio/blueprint/backups/__init__.py +msgid "A backup is already running, check back in a few minutes" +msgstr "バックアップはすでに実行中です。数分後に再確認してください" + +#: changedetectionio/blueprint/backups/__init__.py +msgid "Maximum number of backups reached, please remove some" +msgstr "バックアップの最大数に達しました。いくつか削除してください" + +#: changedetectionio/blueprint/backups/__init__.py +msgid "Backup building in background, check back in a few minutes." +msgstr "バックアップをバックグラウンドで作成中です。数分後に再確認してください。" + +#: changedetectionio/blueprint/backups/__init__.py +msgid "Backups were deleted." +msgstr "バックアップが削除されました。" + +#: changedetectionio/blueprint/backups/restore.py +msgid "Backup zip file" +msgstr "バックアップ ZIP ファイル" + +#: changedetectionio/blueprint/backups/restore.py +msgid "Must be a .zip backup file!" +msgstr ".zip バックアップファイルでなければなりません!" + +#: changedetectionio/blueprint/backups/restore.py +msgid "Include groups" +msgstr "グループを含める" + +#: changedetectionio/blueprint/backups/restore.py +msgid "Replace existing groups of the same UUID" +msgstr "同じ UUID の既存グループを置き換える" + +#: changedetectionio/blueprint/backups/restore.py +msgid "Include watches" +msgstr "ウォッチを含める" + +#: changedetectionio/blueprint/backups/restore.py +msgid "Replace existing watches of the same UUID" +msgstr "同じ UUID の既存ウォッチを置き換える" + +#: changedetectionio/blueprint/backups/restore.py +#: changedetectionio/blueprint/backups/templates/backup_restore.html +msgid "Restore backup" +msgstr "バックアップを復元" + +#: changedetectionio/blueprint/backups/restore.py +msgid "A restore is already running, check back in a few minutes" +msgstr "復元はすでに実行中です。数分後に再確認してください" + +#: changedetectionio/blueprint/backups/restore.py +msgid "No file uploaded" +msgstr "ファイルがアップロードされていません" + +#: changedetectionio/blueprint/backups/restore.py +msgid "File must be a .zip backup file" +msgstr "ファイルは .zip バックアップファイルでなければなりません" + +#: changedetectionio/blueprint/backups/restore.py +msgid "Invalid or corrupted zip file" +msgstr "無効または破損した zip ファイルです" + +#: changedetectionio/blueprint/backups/restore.py +msgid "Restore started in background, check back in a few minutes." +msgstr "復元をバックグラウンドで開始しました。数分後に再確認してください。" + +#: changedetectionio/blueprint/backups/templates/backup_create.html +#: changedetectionio/blueprint/backups/templates/backup_restore.html +msgid "Create" +msgstr "作成" + +#: changedetectionio/blueprint/backups/templates/backup_create.html +#: changedetectionio/blueprint/backups/templates/backup_restore.html +msgid "Restore" +msgstr "復元" + +#: changedetectionio/blueprint/backups/templates/backup_create.html +msgid "A backup is running!" +msgstr "バックアップが実行中です!" + +#: changedetectionio/blueprint/backups/templates/backup_create.html +msgid "" +"Here you can download and request a new backup, when a backup is " +"completed you will see it listed below." +msgstr "ここでバックアップのダウンロードや新規作成を依頼できます。バックアップが完了すると、以下に一覧表示されます。" + +#: changedetectionio/blueprint/backups/templates/backup_create.html +msgid "Mb" +msgstr "MB" + +#: changedetectionio/blueprint/backups/templates/backup_create.html +msgid "No backups found." +msgstr "バックアップが見つかりません。" + +#: changedetectionio/blueprint/backups/templates/backup_create.html +msgid "Create backup" +msgstr "バックアップを作成" + +#: changedetectionio/blueprint/backups/templates/backup_create.html +msgid "Remove backups" +msgstr "バックアップを削除" + +#: changedetectionio/blueprint/backups/templates/backup_restore.html +msgid "A restore is running!" +msgstr "復元が実行中です!" + +#: changedetectionio/blueprint/backups/templates/backup_restore.html +msgid "" +"Restore a backup. Must be a .zip backup file created on/after v0.53.1 " +"(new database layout)." +msgstr "バックアップを復元します。v0.53.1以降に作成された .zip バックアップファイル(新しいデータベース形式)である必要があります。" + +#: changedetectionio/blueprint/backups/templates/backup_restore.html +msgid "" +"Note: This does not override the main application settings, only watches " +"and groups." +msgstr "注意:これはメインアプリケーションの設定を上書きしません。ウォッチとグループのみが対象です。" + +#: changedetectionio/blueprint/backups/templates/backup_restore.html +msgid "Include all groups found in backup?" +msgstr "バックアップに含まれるすべてのグループを含めますか?" + +#: changedetectionio/blueprint/backups/templates/backup_restore.html +msgid "Replace any existing groups of the same UUID?" +msgstr "同じ UUID の既存グループを置き換えますか?" + +#: changedetectionio/blueprint/backups/templates/backup_restore.html +msgid "Include all watches found in backup?" +msgstr "バックアップに含まれるすべてのウォッチを含めますか?" + +#: changedetectionio/blueprint/backups/templates/backup_restore.html +msgid "Replace any existing watches of the same UUID?" +msgstr "同じ UUID の既存ウォッチを置き換えますか?" + +#: changedetectionio/blueprint/imports/importer.py +msgid "" +"Importing 5,000 of the first URLs from your list, the rest can be " +"imported again." +msgstr "リストの最初の5,000件のURLをインポートしています。残りは再度インポートできます。" + +#: changedetectionio/blueprint/imports/importer.py +#, python-brace-format +msgid "{} Imported from list in {:.2f}s, {} Skipped." +msgstr "{} 件をリストから {:.2f}秒でインポートしました。{} 件をスキップしました。" + +#: changedetectionio/blueprint/imports/importer.py +msgid "Unable to read JSON file, was it broken?" +msgstr "JSONファイルを読み込めませんでした。ファイルが壊れていますか?" + +#: changedetectionio/blueprint/imports/importer.py +msgid "JSON structure looks invalid, was it broken?" +msgstr "JSONの構造が無効のようです。ファイルが壊れていますか?" + +#: changedetectionio/blueprint/imports/importer.py +#, python-brace-format +msgid "{} Imported from Distill.io in {:.2f}s, {} Skipped." +msgstr "{} 件を Distill.io から {:.2f}秒でインポートしました。{} 件をスキップしました。" + +#: changedetectionio/blueprint/imports/importer.py +msgid "Unable to read export XLSX file, something wrong with the file?" +msgstr "エクスポートXLSXファイルを読み込めませんでした。ファイルに問題がありますか?" + +#: changedetectionio/blueprint/imports/importer.py +#, python-brace-format +msgid "Error processing row number {}, URL value was incorrect, row was skipped." +msgstr "行番号 {} の処理中にエラーが発生しました。URL値が正しくないため、この行をスキップしました。" + +#: changedetectionio/blueprint/imports/importer.py +#, python-brace-format +msgid "" +"Error processing row number {}, check all cell data types are correct, " +"row was skipped." +msgstr "行番号 {} の処理中にエラーが発生しました。すべてのセルのデータ型が正しいか確認してください。この行をスキップしました。" + +#: changedetectionio/blueprint/imports/importer.py +#, python-brace-format +msgid "{} imported from Wachete .xlsx in {:.2f}s" +msgstr "{} 件を Wachete .xlsx から {:.2f}秒でインポートしました" + +#: changedetectionio/blueprint/imports/importer.py +#, python-brace-format +msgid "{} imported from custom .xlsx in {:.2f}s" +msgstr "{} 件をカスタム .xlsx から {:.2f}秒でインポートしました" + +#: changedetectionio/blueprint/imports/templates/import.html +msgid "URL List" +msgstr "URLリスト" + +#: changedetectionio/blueprint/imports/templates/import.html +msgid "Distill.io" +msgstr "Distill.io" + +#: changedetectionio/blueprint/imports/templates/import.html +msgid ".XLSX & Wachete" +msgstr ".XLSX & Wachete" + +#: changedetectionio/blueprint/imports/templates/import.html +msgid "Restoring changedetection.io backups is in the" +msgstr "changedetection.io のバックアップ復元は" + +#: changedetectionio/blueprint/imports/templates/import.html +msgid "backups section" +msgstr "バックアップセクション" + +#: changedetectionio/blueprint/imports/templates/import.html +msgid "" +"Enter one URL per line, and optionally add tags for each URL after a " +"space, delineated by comma (,):" +msgstr "1行に1つのURLを入力し、必要に応じてスペースの後にカンマ(,)区切りでタグを追加できます:" + +#: changedetectionio/blueprint/imports/templates/import.html +msgid "Example:" +msgstr "例:" + +#: changedetectionio/blueprint/imports/templates/import.html +msgid "URLs which do not pass validation will stay in the textarea." +msgstr "検証を通過しないURLはテキストエリアに残ります。" + +#: changedetectionio/blueprint/imports/templates/import.html +msgid "" +"Copy and Paste your Distill.io watch 'export' file, this should be a JSON" +" file." +msgstr "Distill.io ウォッチの「エクスポート」ファイルをコピーして貼り付けてください。JSONファイルである必要があります。" + +#: changedetectionio/blueprint/imports/templates/import.html +msgid "This is" +msgstr "これは" + +#: changedetectionio/blueprint/imports/templates/import.html +msgid "experimental" +msgstr "試験的機能" + +#: changedetectionio/blueprint/imports/templates/import.html +msgid "supported fields are" +msgstr "サポートされているフィールドは" + +#: changedetectionio/blueprint/imports/templates/import.html +msgid "the rest (including" +msgstr "残り(" + +#: changedetectionio/blueprint/imports/templates/import.html +msgid "are ignored." +msgstr "は無視されます。" + +#: changedetectionio/blueprint/imports/templates/import.html +msgid "How to export?" +msgstr "エクスポート方法は?" + +#: changedetectionio/blueprint/imports/templates/import.html +msgid "Be sure to set your default fetcher to Chrome if required." +msgstr "必要に応じてデフォルトのフェッチャーを Chrome に設定してください。" + +#: changedetectionio/blueprint/imports/templates/import.html +msgid "Table of custom column and data types mapping for the" +msgstr "カスタム列とデータ型マッピングの表:" + +#: changedetectionio/blueprint/imports/templates/import.html +msgid "Custom mapping" +msgstr "カスタムマッピング" + +#: changedetectionio/blueprint/imports/templates/import.html +msgid "File mapping type." +msgstr "ファイルマッピングタイプ。" + +#: changedetectionio/blueprint/imports/templates/import.html +msgid "Column #" +msgstr "列番号" + +#: changedetectionio/blueprint/imports/templates/import.html +msgid "Type" +msgstr "種類" + +#: changedetectionio/blueprint/imports/templates/import.html +msgid "none" +msgstr "なし" + +#: changedetectionio/blueprint/imports/templates/import.html +msgid "CSS/xPath filter" +msgstr "CSS/XPath フィルタ" + +#: changedetectionio/blueprint/imports/templates/import.html +msgid "Group / Tag name(s)" +msgstr "グループ / タグ名" + +#: changedetectionio/blueprint/imports/templates/import.html +msgid "Recheck time (minutes)" +msgstr "再チェック時間(分)" + +#: changedetectionio/blueprint/imports/templates/import.html +msgid "Import" +msgstr "インポート" + +#: changedetectionio/blueprint/rss/single_watch.py +#, python-format +msgid "Watch with UUID %(uuid)s not found" +msgstr "UUID %(uuid)s のウォッチが見つかりません" + +#: changedetectionio/blueprint/rss/single_watch.py +#, python-format +msgid "" +"Watch %(uuid)s does not have enough history snapshots to show changes " +"(need at least 2)" +msgstr "ウォッチ %(uuid)s には変更を表示するためのスナップショット履歴が不足しています(最低2件必要)" + +#: changedetectionio/blueprint/settings/__init__.py +msgid "Password protection removed." +msgstr "パスワード保護が解除されました。" + +#: changedetectionio/blueprint/settings/__init__.py +#, python-brace-format +msgid "Warning: Worker count ({}) is close to or exceeds available CPU cores ({})" +msgstr "警告:ワーカー数({})が利用可能なCPUコア数({})に近いか超えています" + +#: changedetectionio/blueprint/settings/__init__.py +#, python-brace-format +msgid "Worker count adjusted: {}" +msgstr "ワーカー数を調整しました: {}" + +#: changedetectionio/blueprint/settings/__init__.py +msgid "Dynamic worker adjustment not supported for sync workers" +msgstr "同期ワーカーは動的なワーカー数調整をサポートしていません" + +#: changedetectionio/blueprint/settings/__init__.py +#, python-brace-format +msgid "Error adjusting workers: {}" +msgstr "ワーカー数の調整中にエラーが発生しました: {}" + +#: changedetectionio/blueprint/settings/__init__.py +msgid "Password protection enabled." +msgstr "パスワード保護が有効になりました。" + +#: changedetectionio/blueprint/settings/__init__.py +msgid "Settings updated." +msgstr "設定を更新しました。" + +#: changedetectionio/blueprint/settings/__init__.py +#: changedetectionio/blueprint/ui/edit.py +#: changedetectionio/processors/extract.py +msgid "An error occurred, please see below." +msgstr "エラーが発生しました。以下をご確認ください。" + +#: changedetectionio/blueprint/settings/__init__.py +msgid "API Key was regenerated." +msgstr "APIキーが再生成されました。" + +#: changedetectionio/blueprint/settings/__init__.py +msgid "Automatic scheduling paused - checks will not be queued." +msgstr "自動スケジューリングが一時停止されました。チェックはキューに追加されません。" + +#: changedetectionio/blueprint/settings/__init__.py +msgid "Automatic scheduling resumed - checks will be queued normally." +msgstr "自動スケジューリングが再開されました。チェックは通常通りキューに追加されます。" + +#: changedetectionio/blueprint/settings/__init__.py +msgid "All notifications muted." +msgstr "すべての通知をミュートしました。" + +#: changedetectionio/blueprint/settings/__init__.py +msgid "All notifications unmuted." +msgstr "すべての通知のミュートを解除しました。" + +#: changedetectionio/blueprint/settings/templates/notification-log.html +msgid "Notification debug log" +msgstr "通知デバッグログ" + +#: changedetectionio/blueprint/settings/templates/settings.html +#: changedetectionio/blueprint/tags/templates/edit-tag.html +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "General" +msgstr "全般" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Fetching" +msgstr "取得" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Global Filters" +msgstr "グローバルフィルタ" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "UI Options" +msgstr "UI オプション" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "API" +msgstr "API" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "RSS" +msgstr "RSS" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Backups" +msgstr "バックアップ" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Time & Date" +msgstr "時刻と日付" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "CAPTCHA & Proxies" +msgstr "CAPTCHA とプロキシ" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Info" +msgstr "情報" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Default recheck time for all watches, current system minimum is" +msgstr "すべてのウォッチのデフォルト再チェック時間、現在のシステム最小値は" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "more info" +msgstr "詳細はこちら" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "" +"After this many consecutive times that the CSS/xPath filter is missing, " +"send a notification" +msgstr "CSS/XPath フィルタがこの回数連続して見つからない場合、通知を送信" + +# 訳注: "Set to [N] to disable" → 「[N]に設定すると無効になります」 +# 前半の断片に訳を置くと語順が崩れるため、後半にまとめた +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Set to" +msgstr "" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "to disable" +msgstr "に設定すると無効になります" + +#: changedetectionio/blueprint/settings/templates/settings.html +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "" +"Limit collection of history snapshots for each watch to this number of " +"history items." +msgstr "各ウォッチのスナップショット履歴の収集をこの件数に制限します。" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Set to empty to disable / no limit" +msgstr "無効/無制限にするには空欄にしてください" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Password protection for your changedetection.io application." +msgstr "changedetection.io アプリケーションのパスワード保護。" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Password is locked." +msgstr "パスワードはロックされています。" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "" +"Allow access to the watch change history page when password is enabled " +"(Good for sharing the diff page)" +msgstr "パスワードが有効な場合でもウォッチの変更履歴ページへのアクセスを許可(差分ページの共有に便利)" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "" +"When a request returns no content, or the HTML does not contain any text," +" is this considered a change?" +msgstr "リクエストがコンテンツを返さない、またはHTMLにテキストが含まれていない場合、これを変更とみなしますか?" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Choose a default proxy for all watches" +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 "通知リンクの" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "token in notification links." +msgstr "トークンに使用するベースURL。" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Default value is the system environment variable" +msgstr "デフォルト値はシステム環境変数です" + +#: changedetectionio/blueprint/settings/templates/settings.html +#: changedetectionio/templates/_common_fields.html +msgid "read more here" +msgstr "詳しくはこちら" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "method (default) where your watched sites don't need Javascript to render." +msgstr "メソッド(デフォルト):監視しているサイトがJavascriptなしでレンダリングできる場合。" + +#: changedetectionio/blueprint/settings/templates/settings.html +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Use the" +msgstr "使用:" + +#: changedetectionio/blueprint/settings/templates/settings.html +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Basic" +msgstr "基本" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "" +"method requires a network connection to a running WebDriver+Chrome " +"server, set by the ENV var" +msgstr "メソッドは ENV 変数で設定された、実行中の WebDriver+Chrome サーバーへのネットワーク接続が必要です" + +#: changedetectionio/blueprint/settings/templates/settings.html +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "The" +msgstr "この" + +#: changedetectionio/blueprint/settings/templates/settings.html +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Chrome/Javascript" +msgstr "Chrome/Javascript" + +#: changedetectionio/blueprint/settings/templates/settings.html +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "" +"If you're having trouble waiting for the page to be fully rendered (text " +"missing etc), try increasing the 'wait' time here." +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 "テキスト抽出前に" + +#: changedetectionio/blueprint/settings/templates/settings.html +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "seconds before extracting the text." +msgstr "秒間待機します。" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "" +"Number of concurrent workers to process watches. More workers = faster " +"processing but higher memory usage." +msgstr "ウォッチを処理する同時ワーカー数。ワーカーが多いほど処理は速くなりますが、メモリ使用量も増えます。" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Currently running:" +msgstr "現在稼働中:" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "operational" +msgstr "動作中" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "workers" +msgstr "ワーカー" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "actively processing" +msgstr "処理中" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "" +"Example - 3 seconds random jitter could trigger up to 3 seconds earlier " +"or up to 3 seconds later" +msgstr "例:3秒のランダムジッターは、最大3秒早くまたは最大3秒遅くトリガーされる可能性があります" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "" +"For regular plain requests (not chrome based), maximum number of seconds " +"until timeout, 1-999." +msgstr "通常のプレーンリクエスト(Chrome以外)の場合、タイムアウトまでの最大秒数、1〜999。" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Applied to all requests." +msgstr "すべてのリクエストに適用されます。" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "" +"Note: Simply changing the User-Agent often does not defeat anti-robot " +"technologies, it's important to consider" +msgstr "注意:User-Agentを変更するだけではボット対策技術を回避できない場合が多く、以下を考慮することが重要です" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "all of the ways that the browser is detected" +msgstr "ブラウザが検出されるすべての方法" + +#: changedetectionio/blueprint/settings/templates/settings.html +#: changedetectionio/blueprint/ui/templates/diff.html +#: changedetectionio/blueprint/ui/templates/edit.html +#: changedetectionio/templates/_common_fields.html +msgid "Tip:" +msgstr "ヒント:" + +#: changedetectionio/blueprint/settings/templates/settings.html +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Connect using Bright Data and Oxylabs Proxies, find out more here." +msgstr "Bright Data と Oxylabs プロキシを使用して接続できます。詳しくはこちら。" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "" +"Ignore whitespace, tabs and new-lines/line-feeds when considering if a " +"change was detected." +msgstr "変更検知時に空白、タブ、改行を無視します。" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Note:" +msgstr "注意:" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "" +"Changing this will change the status of your existing watches, possibly " +"trigger alerts etc." +msgstr "これを変更すると、既存のウォッチのステータスが変わり、アラートが発生する可能性があります。" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Render anchor tag content, default disabled, when enabled renders links as" +msgstr "アンカータグのコンテンツをレンダリング(デフォルト無効)、有効にするとリンクを次のように表示:" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "" +"Changing this could affect the content of your existing watches, possibly" +" trigger alerts etc." +msgstr "これを変更すると、既存のウォッチのコンテンツに影響し、アラートが発生する可能性があります。" + +#: 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 +msgid "Don't paste HTML here, use only CSS and XPath selectors" +msgstr "ここにHTMLを貼り付けないでください。CSSとXPathセレクターのみを使用してください" + +#: 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の複数の部分を無視できます。" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Note: This is applied globally in addition to the per-watch rules." +msgstr "注意:これはウォッチごとのルールに加えてグローバルに適用されます。" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Matching text will be" +msgstr "一致するテキストは" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "ignored" +msgstr "無視されます" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "in the text snapshot (you can still see it but it wont trigger a change)" +msgstr "テキストスナップショットで(表示はされますが変更はトリガーされません)" + +#: changedetectionio/blueprint/settings/templates/settings.html +#: changedetectionio/templates/edit/text-options.html +msgid "" +"Each line processed separately, any line matching will be ignored " +"(removed before creating the checksum)" +msgstr "各行は個別に処理され、一致する行は無視されます(チェックサム作成前に削除)" + +#: changedetectionio/blueprint/settings/templates/settings.html +#: changedetectionio/templates/edit/text-options.html +msgid "Regular Expression support, wrap the entire line in forward slash" +msgstr "正規表現をサポートしています。行全体をスラッシュで囲んでください" + +#: changedetectionio/blueprint/settings/templates/settings.html +#: changedetectionio/templates/edit/text-options.html +msgid "" +"Changing this will affect the comparison checksum which may trigger an " +"alert" +msgstr "これを変更すると比較チェックサムに影響し、アラートが発生する可能性があります" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "" +"Remove any text that appears in the \"Ignore text\" from the output " +"(otherwise its just ignored for change-detection)" +msgstr "「無視するテキスト」に含まれるテキストを出力から削除します(無効の場合は変更検知では無視されますが表示はされます)" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "API Access" +msgstr "API アクセス" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Drive your changedetection.io via API, More about" +msgstr "API で changedetection.io を操作できます。詳細は" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "API access and examples here" +msgstr "APIアクセスと例はこちら" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Restrict API access limit by using" +msgstr "以下を使用してAPIアクセスを制限:" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "header - required for the Chrome Extension to work" +msgstr "ヘッダー(Chrome拡張機能の動作に必要)" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "API Key" +msgstr "APIキー" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "copy" +msgstr "コピー" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Regenerate API key" +msgstr "APIキーを再生成" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Chrome Extension" +msgstr "Chrome拡張機能" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "" +"Easily add any web-page to your changedetection.io installation from " +"within Chrome." +msgstr "Chromeから任意のウェブページを changedetection.io に簡単に追加できます。" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Step 1" +msgstr "ステップ1" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Install the extension," +msgstr "拡張機能をインストールしてください。" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Step 2" +msgstr "ステップ2" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Navigate to this page," +msgstr "このページに移動してください。" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Step 3" +msgstr "ステップ3" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Open the extension from the toolbar and click" +msgstr "ツールバーから拡張機能を開いてクリックしてください" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Sync API Access" +msgstr "APIアクセスを同期" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Try our new Chrome Extension!" +msgstr "新しいChrome拡張機能をお試しください!" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Chrome store icon" +msgstr "Chromeストアアイコン" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Chrome Webstore" +msgstr "Chrome Webストア" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "" +"Maximum number of history snapshots to include in the watch specific RSS " +"feed." +msgstr "ウォッチ固有のRSSフィードに含めるスナップショット履歴の最大件数。" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "" +"For watching other RSS feeds - When watching RSS/Atom feeds, convert them" +" into clean text for better change detection." +msgstr "他のRSSフィードを監視する場合:RSS/Atomフィードを監視する際、より良い変更検知のためにクリーンなテキストに変換します。" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Does your reader support HTML? Set it here" +msgstr "お使いのリーダーはHTMLをサポートしていますか?ここで設定してください" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "" +"'System default' for the same template for all items, or re-use your " +"\"Notification Body\" as the template." +msgstr "すべての項目に同じテンプレートを使用する場合は「システムデフォルト」を選択するか、「通知本文」をテンプレートとして再利用できます。" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "" +"Ensure the settings below are correct, they are used to manage the time " +"schedule for checking your web page watches." +msgstr "以下の設定が正しいことを確認してください。これらの設定はウェブページウォッチのチェックスケジュール管理に使用されます。" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "UTC Time & Date from Server:" +msgstr "サーバーのUTC時刻と日付:" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Local Time & Date in Browser:" +msgstr "ブラウザのローカル時刻と日付:" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "" +"Enable this setting to open the diff page in a new tab. If disabled, the " +"diff page will open in the current tab." +msgstr "この設定を有効にすると差分ページが新しいタブで開きます。無効の場合は現在のタブで開きます。" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Realtime UI Updates Enabled - (Restart required if this is changed)" +msgstr "リアルタイムUI更新を有効化(変更した場合は再起動が必要です)" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Enable or Disable Favicons next to the watch list" +msgstr "ウォッチリスト横のファビコンを有効または無効にする" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Number of items per page in the watch overview list, 0 to disable." +msgstr "ウォッチ一覧ページの1ページあたりの表示件数(0で無効化)。" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Tip" +msgstr "ヒント" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "" +"\"Residential\" and \"Mobile\" proxy type can be more successfull than " +"\"Data Center\" for blocked websites." +msgstr "ブロックされているウェブサイトには、「データセンター」よりも「住居用」や「モバイル」プロキシタイプが効果的です。" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "\"Name\" will be used for selecting the proxy in the Watch Edit settings" +msgstr "「名前」はウォッチ編集設定でプロキシを選択する際に使用されます" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "" +"SOCKS5 proxies with authentication are only supported with 'plain " +"requests' fetcher, for other fetchers you should whitelist the IP access " +"instead" +msgstr "認証付きSOCKS5プロキシは「プレーンリクエスト」フェッチャーのみサポートしています。他のフェッチャーではIPアクセスをホワイトリストに登録してください" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Uptime:" +msgstr "稼働時間:" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Python version:" +msgstr "Pythonバージョン:" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Plugins active:" +msgstr "有効なプラグイン:" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "No plugins active" +msgstr "有効なプラグインはありません" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Back" +msgstr "戻る" + +#: changedetectionio/blueprint/settings/templates/settings.html +msgid "Clear Snapshot History" +msgstr "スナップショット履歴をクリア" + +#: changedetectionio/blueprint/tags/__init__.py +#, python-brace-format +msgid "The tag \"{}\" already exists" +msgstr "タグ「{}」はすでに存在します" + +#: changedetectionio/blueprint/tags/__init__.py +msgid "Tag added" +msgstr "タグが追加されました" + +#: changedetectionio/blueprint/tags/__init__.py +msgid "Tag deleted, removing from watches in background" +msgstr "タグを削除しました。バックグラウンドでウォッチから削除しています" + +#: changedetectionio/blueprint/tags/__init__.py +msgid "Unlinking tag from watches in background" +msgstr "バックグラウンドでウォッチからタグのリンクを解除しています" + +#: changedetectionio/blueprint/tags/__init__.py +msgid "All tags deleted, clearing from watches in background" +msgstr "すべてのタグを削除しました。バックグラウンドでウォッチからクリアしています" + +#: changedetectionio/blueprint/tags/__init__.py +msgid "Tag not found" +msgstr "タグが見つかりません" + +#: changedetectionio/blueprint/tags/__init__.py +msgid "Updated" +msgstr "更新しました" + +#: changedetectionio/blueprint/tags/templates/edit-tag.html +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Filters & Triggers" +msgstr "フィルタとトリガー" + +#: changedetectionio/blueprint/tags/templates/edit-tag.html +msgid "These settings are" +msgstr "これらの設定は" + +#: changedetectionio/blueprint/tags/templates/edit-tag.html +msgid "added" +msgstr "追加されます" + +#: changedetectionio/blueprint/tags/templates/edit-tag.html +msgid "to any existing watch configurations." +msgstr "(既存のすべてのウォッチ設定に)" + +#: changedetectionio/blueprint/tags/templates/edit-tag.html +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Text filtering" +msgstr "テキストフィルタリング" + +#: changedetectionio/blueprint/tags/templates/edit-tag.html +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Use with caution!" +msgstr "注意して使用してください!" + +#: changedetectionio/blueprint/tags/templates/edit-tag.html +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "This will easily fill up your email storage quota or flood other storages." +msgstr "メールのストレージ容量を簡単に使い切ったり、他のストレージを溢れさせたりする可能性があります。" + +#: changedetectionio/blueprint/tags/templates/edit-tag.html +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Look out!" +msgstr "注意!" + +#: changedetectionio/blueprint/tags/templates/edit-tag.html +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Lookout!" +msgstr "注意!" + +#: changedetectionio/blueprint/tags/templates/edit-tag.html +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "There are" +msgstr "" + +#: changedetectionio/blueprint/tags/templates/edit-tag.html +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "system-wide notification URLs enabled" +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" +msgstr "このフォームはこのウォッチのみの通知設定を上書きします" + +#: changedetectionio/blueprint/tags/templates/edit-tag.html +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "an empty Notification URL list here will still send notifications." +msgstr "ここの通知URLリストが空の場合でも通知は送信されます。" + +#: changedetectionio/blueprint/tags/templates/edit-tag.html +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Use system defaults" +msgstr "システムデフォルトを使用" + +#: changedetectionio/blueprint/tags/templates/groups-overview.html +msgid "Add a new organisational tag" +msgstr "新しい組織タグを追加" + +#: changedetectionio/blueprint/tags/templates/groups-overview.html +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Watch group / tag" +msgstr "ウォッチグループ / タグ" + +#: changedetectionio/blueprint/tags/templates/groups-overview.html +msgid "" +"Groups allows you to manage filters and notifications for multiple " +"watches under a single organisational tag." +msgstr "グループを使用すると、単一の組織タグの下で複数のウォッチのフィルタと通知を管理できます。" + +#: changedetectionio/blueprint/tags/templates/groups-overview.html +msgid "# Watches" +msgstr "ウォッチ数" + +#: changedetectionio/blueprint/tags/templates/groups-overview.html +msgid "Tag / Label name" +msgstr "タグ / ラベル名" + +#: changedetectionio/blueprint/tags/templates/groups-overview.html +msgid "No website organisational tags/groups configured" +msgstr "ウェブサイトの組織タグ/グループが設定されていません" + +#: changedetectionio/blueprint/tags/templates/groups-overview.html +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Edit" +msgstr "編集" + +#: changedetectionio/blueprint/tags/templates/groups-overview.html +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Recheck" +msgstr "再チェック" + +#: changedetectionio/blueprint/tags/templates/groups-overview.html +msgid "Delete Group?" +msgstr "グループを削除しますか?" + +#: changedetectionio/blueprint/tags/templates/groups-overview.html +#, python-format +msgid "" +"

Are you sure you want to delete group " +"%(title)s?

This action cannot be undone.

" +msgstr "

グループ %(title)s を削除してもよいですか?

この操作は元に戻せません。

" + +#: changedetectionio/blueprint/tags/templates/groups-overview.html +#: changedetectionio/blueprint/ui/templates/edit.html +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Delete" +msgstr "削除" + +#: changedetectionio/blueprint/tags/templates/groups-overview.html +msgid "Deletes and removes tag" +msgstr "タグを完全に削除する" + +#: changedetectionio/blueprint/tags/templates/groups-overview.html +msgid "Unlink Group?" +msgstr "グループのリンクを解除しますか?" + +#: changedetectionio/blueprint/tags/templates/groups-overview.html +#, python-format +msgid "" +"

Are you sure you want to unlink all watches from group " +"%(title)s?

The tag will be kept but watches will " +"be removed from it.

" +msgstr "

グループ %(title)s からすべてのウォッチのリンクを解除してもよいですか?

タグは保持されますが、ウォッチはそこから削除されます。

" + +#: changedetectionio/blueprint/tags/templates/groups-overview.html +msgid "Unlink" +msgstr "リンクを解除" + +#: changedetectionio/blueprint/tags/templates/groups-overview.html +msgid "Keep the tag but unlink any watches" +msgstr "タグは保持しつつウォッチのリンクを解除する" + +#: changedetectionio/blueprint/tags/templates/groups-overview.html +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "RSS Feed for this watch" +msgstr "このウォッチのRSSフィード" + +#: changedetectionio/blueprint/ui/__init__.py +#, python-brace-format +msgid "{} watches deleted" +msgstr "{} 件のウォッチを削除しました" + +#: changedetectionio/blueprint/ui/__init__.py +#, python-brace-format +msgid "{} watches paused" +msgstr "{} 件のウォッチを一時停止しました" + +#: changedetectionio/blueprint/ui/__init__.py +#, python-brace-format +msgid "{} watches unpaused" +msgstr "{} 件のウォッチの一時停止を解除しました" + +#: changedetectionio/blueprint/ui/__init__.py +#, python-brace-format +msgid "{} watches updated" +msgstr "{} 件のウォッチを更新しました" + +#: changedetectionio/blueprint/ui/__init__.py +#, python-brace-format +msgid "{} watches muted" +msgstr "{} 件のウォッチをミュートしました" + +#: changedetectionio/blueprint/ui/__init__.py +#, python-brace-format +msgid "{} watches un-muted" +msgstr "{} 件のウォッチのミュートを解除しました" + +#: changedetectionio/blueprint/ui/__init__.py +#, python-brace-format +msgid "{} watches queued for rechecking" +msgstr "{} 件のウォッチを再チェックのためキューに追加しました" + +#: changedetectionio/blueprint/ui/__init__.py +#, python-brace-format +msgid "{} watches errors cleared" +msgstr "{} 件のウォッチのエラーをクリアしました" + +#: changedetectionio/blueprint/ui/__init__.py +#, python-brace-format +msgid "{} watches cleared/reset." +msgstr "{} 件のウォッチをクリア/リセットしました。" + +#: changedetectionio/blueprint/ui/__init__.py +#, python-brace-format +msgid "{} watches set to use default notification settings" +msgstr "{} 件のウォッチをデフォルト通知設定に変更しました" + +#: changedetectionio/blueprint/ui/__init__.py +#, python-brace-format +msgid "{} watches were tagged" +msgstr "{} 件のウォッチにタグを付けました" + +#: changedetectionio/blueprint/ui/__init__.py +msgid "Watch not found" +msgstr "ウォッチが見つかりません" + +#: changedetectionio/blueprint/ui/__init__.py +#, python-brace-format +msgid "Cleared snapshot history for watch {}" +msgstr "ウォッチ {} のスナップショット履歴をクリアしました" + +#: changedetectionio/blueprint/ui/__init__.py +msgid "History clearing started in background" +msgstr "バックグラウンドで履歴のクリアを開始しました" + +#: changedetectionio/blueprint/ui/__init__.py +msgid "Incorrect confirmation text." +msgstr "確認テキストが正しくありません。" + +#: changedetectionio/blueprint/ui/__init__.py +#, python-brace-format +msgid "The watch by UUID {} does not exist." +msgstr "UUID {} のウォッチは存在しません。" + +#: changedetectionio/blueprint/ui/__init__.py +msgid "Deleted." +msgstr "削除しました。" + +#: changedetectionio/blueprint/ui/__init__.py +msgid "Cloned, you are editing the new watch." +msgstr "複製しました。新しいウォッチを編集しています。" + +#: changedetectionio/blueprint/ui/__init__.py +msgid "Watch is already queued or being checked." +msgstr "ウォッチはすでにキュー済みまたはチェック中です。" + +#: changedetectionio/blueprint/ui/__init__.py +msgid "Queued 1 watch for rechecking." +msgstr "1件のウォッチを再チェックのためキューに追加しました。" + +#: changedetectionio/blueprint/ui/__init__.py +#, python-brace-format +msgid "Queued {} watches for rechecking ({} already queued or running)." +msgstr "{} 件のウォッチを再チェックのためキューに追加しました({} 件はすでにキュー済みまたは実行中)。" + +#: changedetectionio/blueprint/ui/__init__.py +#, python-brace-format +msgid "Queued {} watches for rechecking." +msgstr "{} 件のウォッチを再チェックのためキューに追加しました。" + +#: changedetectionio/blueprint/ui/__init__.py +msgid "Queueing watches for rechecking in background..." +msgstr "バックグラウンドで再チェックのためウォッチをキューに追加しています..." + +#: changedetectionio/blueprint/ui/__init__.py +#, python-brace-format +msgid "" +"Could not share, something went wrong while communicating with the share " +"server - {}" +msgstr "共有できませんでした。共有サーバーとの通信中にエラーが発生しました - {}" + +#: changedetectionio/blueprint/ui/__init__.py +msgid "Language set to auto-detect from browser" +msgstr "言語をブラウザから自動検出に設定しました" + +#: changedetectionio/blueprint/ui/diff.py +#: changedetectionio/blueprint/ui/preview.py +msgid "No history found for the specified link, bad link?" +msgstr "指定したリンクの履歴が見つかりません。リンクが正しくないですか?" + +#: changedetectionio/blueprint/ui/diff.py +msgid "" +"Not enough history (2 snapshots required) to show difference page for " +"this watch." +msgstr "このウォッチの差分ページを表示するための履歴が不足しています(スナップショットが2件以上必要です)。" + +#: changedetectionio/blueprint/ui/edit.py +msgid "No watches to edit" +msgstr "編集するウォッチがありません" + +#: changedetectionio/blueprint/ui/edit.py +#, python-brace-format +msgid "No watch with the UUID {} found." +msgstr "UUID {} のウォッチが見つかりません。" + +#: changedetectionio/blueprint/ui/edit.py +#, python-brace-format +msgid "Switched to mode - {}." +msgstr "モードを {} に切り替えました。" + +#: changedetectionio/blueprint/ui/edit.py +#, python-brace-format +msgid "" +"Could not load '{}' processor, processor plugin might be missing. Please " +"select a different processor." +msgstr "「{}」プロセッサーを読み込めませんでした。プロセッサープラグインが見つからない可能性があります。別のプロセッサーを選択してください。" + +#: changedetectionio/blueprint/ui/edit.py +#, python-brace-format +msgid "Could not load '{}' processor, processor plugin might be missing." +msgstr "「{}」プロセッサーを読み込めませんでした。プロセッサープラグインが見つからない可能性があります。" + +#: changedetectionio/blueprint/ui/edit.py +msgid "Updated watch - unpaused!" +msgstr "ウォッチを更新しました - 一時停止を解除しました!" + +#: changedetectionio/blueprint/ui/edit.py +msgid "Updated watch." +msgstr "ウォッチを更新しました。" + +#: changedetectionio/blueprint/ui/preview.py +msgid "Preview unavailable - No fetch/check completed or triggers not reached" +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のリストは保持されます!" + +#: changedetectionio/blueprint/ui/templates/clear_all_history.html +msgid "You may like to use the" +msgstr "" + +#: changedetectionio/blueprint/ui/templates/clear_all_history.html +msgid "BACKUP" +msgstr "バックアップ" + +#: changedetectionio/blueprint/ui/templates/clear_all_history.html +msgid "link first." +msgstr "リンクを先にご利用ください。" + +#: changedetectionio/blueprint/ui/templates/clear_all_history.html +msgid "Confirmation text" +msgstr "確認テキスト" + +#: changedetectionio/blueprint/ui/templates/clear_all_history.html +msgid "Type in the word" +msgstr "次の単語を入力してください:" + +#: changedetectionio/blueprint/ui/templates/clear_all_history.html +msgid "clear" +msgstr "clear" + +#: changedetectionio/blueprint/ui/templates/clear_all_history.html +msgid "to confirm that you understand." +msgstr "理解したことを確認するため。" + +#: changedetectionio/blueprint/ui/templates/clear_all_history.html +msgid "Clear History!" +msgstr "履歴をクリア!" + +#: changedetectionio/blueprint/ui/templates/clear_all_history.html +#: changedetectionio/templates/base.html +msgid "Cancel" +msgstr "キャンセル" + +#: changedetectionio/blueprint/ui/templates/diff-offscreen-options.html +msgid "Share diff as image" +msgstr "差分を画像として共有" + +#: changedetectionio/blueprint/ui/templates/diff-offscreen-options.html +msgid "Share as Image" +msgstr "画像として共有" + +#: changedetectionio/blueprint/ui/templates/diff-offscreen-options.html +msgid "Ignore any lines matching" +msgstr "一致する行を無視" + +#: changedetectionio/blueprint/ui/templates/diff-offscreen-options.html +msgid "Ignore any lines matching excluding digits" +msgstr "数字を除いて一致する行を無視" + +#: changedetectionio/blueprint/ui/templates/diff.html +msgid "From" +msgstr "変更前" + +#: changedetectionio/blueprint/ui/templates/diff.html +msgid "To" +msgstr "変更後" + +#: changedetectionio/blueprint/ui/templates/diff.html +msgid "Words" +msgstr "単語" + +#: changedetectionio/blueprint/ui/templates/diff.html +msgid "Lines" +msgstr "行" + +#: changedetectionio/blueprint/ui/templates/diff.html +msgid "Ignore Whitespace" +msgstr "空白を無視" + +#: changedetectionio/blueprint/ui/templates/diff.html +msgid "Same/non-changed" +msgstr "同じ/変更なし" + +#: changedetectionio/blueprint/ui/templates/diff.html +msgid "Removed" +msgstr "削除済み" + +#: changedetectionio/blueprint/ui/templates/diff.html +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Added" +msgstr "追加済み" + +#: changedetectionio/blueprint/ui/templates/diff.html +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Replaced" +msgstr "置換済み" + +#: changedetectionio/blueprint/ui/templates/diff.html +#: changedetectionio/blueprint/ui/templates/preview.html +msgid "Keyboard:" +msgstr "キーボード:" + +#: changedetectionio/blueprint/ui/templates/diff.html +#: changedetectionio/blueprint/ui/templates/preview.html +msgid "Previous" +msgstr "前へ" + +#: changedetectionio/blueprint/ui/templates/diff.html +#: changedetectionio/blueprint/ui/templates/preview.html +msgid "Next" +msgstr "次へ" + +#: changedetectionio/blueprint/ui/templates/diff.html +msgid "Jump to next difference" +msgstr "次の差分にジャンプ" + +#: changedetectionio/blueprint/ui/templates/diff.html +msgid "Jump" +msgstr "ジャンプ" + +#: changedetectionio/blueprint/ui/templates/diff.html +#: changedetectionio/blueprint/ui/templates/preview.html +msgid "Error Text" +msgstr "エラーテキスト" + +#: changedetectionio/blueprint/ui/templates/diff.html +#: changedetectionio/blueprint/ui/templates/preview.html +msgid "Error Screenshot" +msgstr "エラースクリーンショット" + +#: changedetectionio/blueprint/ui/templates/diff.html +#: changedetectionio/blueprint/ui/templates/preview.html +msgid "Text" +msgstr "テキスト" + +#: changedetectionio/blueprint/ui/templates/diff.html +#: changedetectionio/blueprint/ui/templates/preview.html +msgid "Current screenshot" +msgstr "現在のスクリーンショット" + +#: changedetectionio/blueprint/ui/templates/diff.html +msgid "Extract Data" +msgstr "データを抽出" + +#: changedetectionio/blueprint/ui/templates/diff.html +msgid "seconds ago." +msgstr "秒前。" + +#: changedetectionio/blueprint/ui/templates/diff.html +#: changedetectionio/blueprint/ui/templates/preview.html +msgid "seconds ago" +msgstr "秒前" + +#: changedetectionio/blueprint/ui/templates/diff.html +msgid "Current error-ing screenshot from most recent request" +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 "プロのヒント:設定から" + +#: changedetectionio/blueprint/ui/templates/diff.html +msgid "\"share access when password is enabled\"" +msgstr "「パスワードが有効な場合でも共有アクセスを許可」" + +#: changedetectionio/blueprint/ui/templates/diff.html +msgid "from settings." +msgstr "を有効にできます。" + +#: changedetectionio/blueprint/ui/templates/diff.html +msgid "Goto single snapshot" +msgstr "単一スナップショットに移動" + +#: changedetectionio/blueprint/ui/templates/diff.html +msgid "Highlight text to share or add to ignore lists." +msgstr "テキストをハイライトして共有したり、無視リストに追加できます。" + +#: changedetectionio/blueprint/ui/templates/diff.html +#: changedetectionio/blueprint/ui/templates/preview.html +msgid "" +"For now, Differences are performed on text, not graphically, only the " +"latest screenshot is available." +msgstr "現在、差分はテキストで実行されグラフィカルではありません。最新のスクリーンショットのみ利用可能です。" + +#: changedetectionio/blueprint/ui/templates/diff.html +#: changedetectionio/blueprint/ui/templates/preview.html +msgid "Current screenshot from most recent request" +msgstr "最新のリクエストからの現在のスクリーンショット" + +#: changedetectionio/blueprint/ui/templates/diff.html +#: changedetectionio/blueprint/ui/templates/preview.html +msgid "No screenshot available just yet! Try rechecking the page." +msgstr "まだスクリーンショットがありません!ページを再チェックしてみてください。" + +#: changedetectionio/blueprint/ui/templates/diff.html +msgid "Screenshot requires Playwright/WebDriver enabled" +msgstr "スクリーンショットには Playwright/WebDriver の有効化が必要です" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Request" +msgstr "リクエスト" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Browser Steps" +msgstr "ブラウザステップ" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Visual Filter Selector" +msgstr "ビジュアルフィルターセレクター" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Conditions" +msgstr "条件" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Stats" +msgstr "統計" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Some sites use JavaScript to create the content, for this you should" +msgstr "一部のサイトはJavaScriptでコンテンツを生成します。その場合は以下を使用してください:" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "use the Chrome/WebDriver Fetcher" +msgstr "Chrome/WebDriverフェッチャーを使用する" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Variables are supported in the URL" +msgstr "URLで変数を使用できます" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "help and examples here" +msgstr "ヘルプと例はこちら" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Organisational tag/group name used in the main listing page" +msgstr "メイン一覧ページで使用される組織タグ/グループ名" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "" +"Automatically uses the page title if found, you can also use your own " +"title/description here" +msgstr "ページタイトルが見つかった場合は自動的に使用されます。ここで独自のタイトル/説明を使用することもできます" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "The interval/amount of time between each check." +msgstr "各チェック間の間隔/時間。" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "" +"Sends a notification when the filter can no longer be seen on the page, " +"good for knowing when the page changed and your filter will not work " +"anymore." +msgstr "フィルタがページで見つからなくなったときに通知を送信します。ページが変更されてフィルタが機能しなくなったことを把握するのに便利です。" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Set to empty to use system settings default" +msgstr "空欄にするとシステム設定のデフォルトを使用します" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "" +"method (default) where your watched site doesn't need Javascript to " +"render." +msgstr "メソッド(デフォルト):監視しているサイトがJavascriptなしでレンダリングできる場合。" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "" +"method requires a network connection to a running WebDriver+Chrome " +"server, set by the ENV var 'WEBDRIVER_URL'." +msgstr "メソッドは ENV 変数「WEBDRIVER_URL」で設定された実行中の WebDriver+Chrome サーバーへのネットワーク接続が必要です。" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Check/Scan all" +msgstr "すべてをチェック/スキャン" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Choose a proxy for this watch" +msgstr "このウォッチのプロキシを選択" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Using the current global default settings" +msgstr "現在のグローバルデフォルト設定を使用中" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Show advanced options" +msgstr "詳細オプションを表示" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "" +"Run this code before performing change detection, handy for filling in " +"fields and other actions" +msgstr "変更検知を実行する前にこのコードを実行します。フィールドへの入力などのアクションに便利です" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "More help and examples here" +msgstr "詳細なヘルプと例はこちら" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Variables are supported in the request body" +msgstr "リクエストボディで変数を使用できます" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Variables are supported in the request header values" +msgstr "リクエストヘッダー値で変数を使用できます" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Alert! Extra headers file found and will be added to this watch!" +msgstr "アラート!追加ヘッダーファイルが見つかりました。このウォッチに追加されます!" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Headers can be also read from a file in your data-directory" +msgstr "ヘッダーはデータディレクトリのファイルからも読み込めます" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Read more here" +msgstr "詳しくはこちら" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Not supported by Selenium browser" +msgstr "Seleniumブラウザではサポートされていません" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Turn on text finder" +msgstr "テキスト検索をオンにする" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Please wait, first browser step can take a little time to load.." +msgstr "お待ちください。最初のブラウザステップの読み込みに少し時間がかかる場合があります.." + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Click here to Start" +msgstr "クリックして開始" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Please allow 10-15 seconds for the browser to connect." +msgstr "ブラウザの接続に10〜15秒お待ちください。" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Press \"Play\" to start." +msgstr "「Play」を押して開始してください。" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Visual Selector data is not ready, watch needs to be checked atleast once." +msgstr "ビジュアルセレクターのデータが準備できていません。ウォッチを少なくとも1回チェックする必要があります。" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "" +"Sorry, this functionality only works with fetchers that support " +"interactive Javascript (so far only Playwright based fetchers)" +msgstr "申し訳ありませんが、この機能はインタラクティブなJavascriptをサポートするフェッチャー(現在はPlaywrightベースのフェッチャーのみ)でのみ動作します" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "to one that supports interactive Javascript." +msgstr "インタラクティブなJavascriptをサポートするものに変更してください。" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "You need to" +msgstr "次の操作が必要です:" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Set the fetch method" +msgstr "取得メソッドを設定する" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "" +"Use the verify (✓) button to test if a condition passes against the " +"current snapshot." +msgstr "確認ボタン(✓)を使用して、現在のスナップショットに対して条件が満たされるかテストできます。" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Read a quick tutorial about" +msgstr "次のクイックチュートリアルをご覧ください:" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "using conditional web page changes here" +msgstr "条件付きウェブページ変更の使用方法はこちら" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Activate preview" +msgstr "プレビューを有効化" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Pro-tips:" +msgstr "プロのヒント:" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Use the preview page to see your filters and triggers highlighted." +msgstr "プレビューページを使用して、フィルタとトリガーのハイライト表示を確認できます。" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Limit trigger/ignore/block/extract to;" +msgstr "トリガー/無視/ブロック/抽出を次に制限:" + +# 訳注: "...the algorithm may consider an [addition] instead of [replacement], for example." +# → 「...アルゴリズムが「追加」ではなく「置換」と判断することがあります。」 +# 日本語では「AではなくB」の語順になるため断片の訳を組み替えた。 +# 「 の開き括弧は前半の msgstr 末尾に、閉じ括弧は "instead of" と "for example." の msgstr に入れた +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "" +"Note: Depending on the length and similarity of the text on each line, " +"the algorithm may consider an" +msgstr "注意:各行のテキストの長さと類似度によっては、アルゴリズムが「" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "instead of" +msgstr "」ではなく「" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "replacement" +msgstr "置換" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "for example." +msgstr "」と判断することがあります。" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "addition" +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 "そのため、新しいコンテンツに興味がある場合は" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "when you're interested in new content." +msgstr "を選択することをおすすめします。" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "When content is merely moved in a list, it will also trigger an" +msgstr "リスト内でコンテンツが移動しただけでも" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "consider enabling" +msgstr "有効化を検討してください:" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Only trigger when unique lines appear" +msgstr "ユニークな行が出現したときのみトリガー" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "" +"Good for websites that just move the content around, and you want to know" +" when NEW content is added, compares new lines against all history for " +"this watch." +msgstr "コンテンツを移動させるだけのウェブサイトに適しています。新しいコンテンツが追加されたときに知りたい場合に便利で、このウォッチのすべての履歴と新しい行を比較します。" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "" +"Helps reduce changes detected caused by sites shuffling lines around, " +"combine with" +msgstr "サイトが行を並べ替えることで発生する不要な変更検知を減らすのに役立ちます。以下と組み合わせてください:" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "check unique lines" +msgstr "ユニーク行をチェック" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "below." +msgstr "以下。" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Remove any whitespace before and after each line of text" +msgstr "各テキスト行の前後の空白を削除" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Loading..." +msgstr "読み込み中..." + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "The Visual Selector tool lets you select the" +msgstr "ビジュアルセレクターツールを使用すると、変更検知に使用する" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "text" +msgstr "テキスト" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "" +"elements that will be used for the change detection. It automatically " +"fills-in the filters in the \"CSS/JSONPath/JQ/XPath Filters\" box of the" +msgstr "要素を選択できます。「CSS/JSONPath/JQ/XPath フィルタ」ボックスのフィルタを自動的に入力します(タブ:" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "tab. Use" +msgstr "タブを使用する。使用:" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Shift+Click" +msgstr "Shift+クリック" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "to select multiple items." +msgstr "複数の項目を選択するには。" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Selection Mode:" +msgstr "選択モード:" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Select by element" +msgstr "要素で選択" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Draw area" +msgstr "エリアを描画" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Clear selection" +msgstr "選択をクリア" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "One moment, fetching screenshot and element information.." +msgstr "少々お待ちください。スクリーンショットと要素情報を取得しています..." + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Currently:" +msgstr "現在:" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "" +"Sorry, this functionality only works with fetchers that support " +"Javascript and screenshots (such as playwright etc)." +msgstr "申し訳ありませんが、この機能はJavascriptとスクリーンショットをサポートするフェッチャー(playwrightなど)でのみ動作します。" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "to one that supports Javascript and screenshots." +msgstr "Javascriptとスクリーンショットをサポートするものに変更してください。" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Check count" +msgstr "チェック回数" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Consecutive filter failures" +msgstr "連続フィルタ失敗回数" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "History length" +msgstr "履歴の件数" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Last fetch duration" +msgstr "最後の取得時間" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Notification alert count" +msgstr "通知アラート回数" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Server type reply" +msgstr "サーバーの応答タイプ" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Download latest HTML snapshot" +msgstr "最新のHTMLスナップショットをダウンロード" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Download watch data package" +msgstr "ウォッチデータパッケージをダウンロード" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Delete Watch?" +msgstr "ウォッチを削除しますか?" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Are you sure you want to delete the watch for:" +msgstr "次のウォッチを削除してもよいですか:" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "This action cannot be undone." +msgstr "この操作は元に戻せません。" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Clear History?" +msgstr "履歴をクリアしますか?" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Are you sure you want to clear all history for:" +msgstr "次のすべての履歴をクリアしてもよいですか:" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "" +"This will remove all snapshots and previous versions. This action cannot " +"be undone." +msgstr "すべてのスナップショットと以前のバージョンが削除されます。この操作は元に戻せません。" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Clear History" +msgstr "履歴をクリア" + +#: changedetectionio/blueprint/ui/templates/edit.html +msgid "Clone & Edit" +msgstr "複製して編集" + +#: changedetectionio/blueprint/ui/templates/preview.html +msgid "Select timestamp" +msgstr "タイムスタンプを選択" + +#: changedetectionio/blueprint/ui/templates/preview.html +msgid "Go" +msgstr "移動" + +#: changedetectionio/blueprint/ui/templates/preview.html +msgid "Current erroring screenshot from most recent request" +msgstr "最新のリクエストからの現在のエラースクリーンショット" + +#: changedetectionio/blueprint/ui/templates/preview.html +msgid "" +"Screenshot requires a Content Fetcher ( Sockpuppetbrowser, selenium, etc " +") that supports screenshots." +msgstr "スクリーンショットには、スクリーンショットをサポートするコンテンツフェッチャー(Sockpuppetbrowser、seleniumなど)が必要です。" + +#: changedetectionio/blueprint/ui/views.py +#, python-brace-format +msgid "Warning, URL {} already exists" +msgstr "警告: URL {} はすでに存在します" + +#: changedetectionio/blueprint/ui/views.py +msgid "Watch added in Paused state, saving will unpause." +msgstr "ウォッチは一時停止状態で追加されました。保存すると再開されます。" + +#: changedetectionio/blueprint/ui/views.py +msgid "Watch added." +msgstr "ウォッチを追加しました。" + +#: changedetectionio/blueprint/watchlist/__init__.py +#, python-brace-format +msgid "displaying {start} - {end} {record_name} in total {total}" +msgstr "{start} - {end} {record_name} を表示中 / 合計 {total}" + +#: changedetectionio/blueprint/watchlist/__init__.py +msgid "records" +msgstr "件" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Changedetection.io can monitor more than just web-pages! See our plugins!" +msgstr "Changedetection.io はウェブページ以外も監視できます!プラグインをご覧ください!" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "More info" +msgstr "詳細情報" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "You can also add 'shared' watches." +msgstr "「共有」ウォッチを追加することもできます。" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Add a new web page change detection watch" +msgstr "新しいウェブページ変更検知ウォッチを追加" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Watch this URL!" +msgstr "このURLをウォッチする!" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Edit first then Watch" +msgstr "編集してからウォッチ" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Pause" +msgstr "一時停止" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "UnPause" +msgstr "再開" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Mute" +msgstr "ミュート" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "UnMute" +msgstr "ミュート解除" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Tag" +msgstr "タグ" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Mark viewed" +msgstr "既読にする" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Use default notification" +msgstr "デフォルト通知を使用" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Clear errors" +msgstr "エラーをクリア" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Clear Histories" +msgstr "履歴をすべてクリア" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "" +"

Are you sure you want to clear history for the selected " +"items?

This action cannot be undone.

" +msgstr "

選択した項目の履歴をクリアしてもよいですか?

この操作は元に戻せません。

" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "OK" +msgstr "OK" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Clear/reset history" +msgstr "履歴のクリア/リセット" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Delete Watches?" +msgstr "ウォッチを削除しますか?" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "" +"

Are you sure you want to delete the selected " +"watches?

This action cannot be undone.

" +msgstr "

選択したウォッチを削除してもよいですか?

この操作は元に戻せません。

" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Queued size" +msgstr "キューのサイズ" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Searching" +msgstr "検索中" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "All" +msgstr "すべて" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Website" +msgstr "ウェブサイト" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Restock & Price" +msgstr "在庫補充&価格" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Checked" +msgstr "チェック済み" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Last" +msgstr "最終" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Changed" +msgstr "変更済み" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "" +"No web page change detection watches configured, please add a URL in the " +"box above, or" +msgstr "ウェブページ変更検知ウォッチが設定されていません。上のボックスにURLを追加するか、" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "import a list" +msgstr "リストをインポート" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Detecting restock and price" +msgstr "在庫補充と価格を検知中" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "In stock" +msgstr "在庫あり" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Not in stock" +msgstr "在庫なし" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Price" +msgstr "価格" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "No information" +msgstr "情報なし" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +#: changedetectionio/templates/base.html +msgid "Checking now" +msgstr "今すぐチェック" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Queued" +msgstr "キュー済み" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "History" +msgstr "履歴" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Preview" +msgstr "プレビュー" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "With errors" +msgstr "エラーあり" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Mark all viewed" +msgstr "すべて既読にする" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +#, python-format +msgid "Mark all viewed in '%(title)s'" +msgstr "'%(title)s' のすべてを既読にする" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Unread" +msgstr "未読" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +msgid "Recheck all" +msgstr "すべて再チェック" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +#, python-format +msgid "in '%(title)s'" +msgstr "'%(title)s' 内" + +#: changedetectionio/blueprint/watchlist/templates/watch-overview.html +#: changedetectionio/flask_app.py changedetectionio/realtime/socket_server.py +msgid "Not yet" +msgstr "未実施" + +#: changedetectionio/flask_app.py +msgid "0 seconds" +msgstr "0秒" + +#: changedetectionio/flask_app.py +msgid "year" +msgstr "年" + +#: changedetectionio/flask_app.py +msgid "years" +msgstr "年" + +#: changedetectionio/flask_app.py +msgid "month" +msgstr "ヶ月" + +#: changedetectionio/flask_app.py +msgid "months" +msgstr "ヶ月" + +#: changedetectionio/flask_app.py +msgid "week" +msgstr "週" + +#: changedetectionio/flask_app.py +msgid "weeks" +msgstr "週" + +#: changedetectionio/flask_app.py +msgid "day" +msgstr "日" + +#: changedetectionio/flask_app.py +msgid "days" +msgstr "日" + +#: changedetectionio/flask_app.py +msgid "hour" +msgstr "時間" + +#: changedetectionio/flask_app.py +msgid "hours" +msgstr "時間" + +#: changedetectionio/flask_app.py +msgid "minute" +msgstr "分" + +#: changedetectionio/flask_app.py +msgid "minutes" +msgstr "分" + +#: changedetectionio/flask_app.py +msgid "second" +msgstr "秒" + +#: changedetectionio/blueprint/settings/templates/settings.html +#: changedetectionio/flask_app.py +msgid "seconds" +msgstr "秒" + +#: changedetectionio/flask_app.py +msgid "Already logged in" +msgstr "すでにログイン済みです" + +#: changedetectionio/flask_app.py +msgid "You must be logged in, please log in." +msgstr "ログインが必要です。ログインしてください。" + +#: changedetectionio/flask_app.py +msgid "Incorrect password" +msgstr "パスワードが正しくありません" + +#: changedetectionio/forms.py +msgid "" +"At least one time interval (weeks, days, hours, minutes, or seconds) must" +" be specified." +msgstr "時間間隔(週、日、時間、分、または秒)を少なくとも1つ指定する必要があります。" + +#: changedetectionio/forms.py +msgid "" +"At least one time interval (weeks, days, hours, minutes, or seconds) must" +" be specified when not using global settings." +msgstr "グローバル設定を使用しない場合、時間間隔(週、日、時間、分、または秒)を少なくとも1つ指定する必要があります。" + +#: changedetectionio/forms.py +msgid "Invalid time format. Use HH:MM." +msgstr "無効な時刻形式です。HH:MM形式を使用してください。" + +#: changedetectionio/forms.py +msgid "Not a valid timezone name" +msgstr "有効なタイムゾーン名ではありません" + +#: changedetectionio/forms.py +msgid "not set" +msgstr "未設定" + +#: changedetectionio/forms.py +msgid "Start At" +msgstr "開始時刻" + +#: changedetectionio/forms.py +msgid "Run duration" +msgstr "実行期間" + +#: changedetectionio/forms.py +msgid "Use time scheduler" +msgstr "タイムスケジューラを使用" + +#: changedetectionio/forms.py +msgid "Optional timezone to run in" +msgstr "実行するタイムゾーン(任意)" + +#: changedetectionio/forms.py +msgid "Monday" +msgstr "月曜日" + +#: changedetectionio/forms.py +msgid "Tuesday" +msgstr "火曜日" + +#: changedetectionio/forms.py +msgid "Wednesday" +msgstr "水曜日" + +#: changedetectionio/forms.py +msgid "Thursday" +msgstr "木曜日" + +#: changedetectionio/forms.py +msgid "Friday" +msgstr "金曜日" + +#: changedetectionio/forms.py +msgid "Saturday" +msgstr "土曜日" + +#: changedetectionio/forms.py +msgid "Sunday" +msgstr "日曜日" + +#: changedetectionio/forms.py +msgid "Weeks" +msgstr "週" + +#: changedetectionio/forms.py +msgid "Should contain zero or more seconds" +msgstr "0秒以上の値を入力してください" + +#: changedetectionio/forms.py +msgid "Days" +msgstr "日" + +#: changedetectionio/forms.py +msgid "Hours" +msgstr "時間" + +#: changedetectionio/forms.py +msgid "Minutes" +msgstr "分" + +#: changedetectionio/forms.py +msgid "Seconds" +msgstr "秒" + +#: changedetectionio/forms.py +msgid "Notification Body and Title is required when a Notification URL is used" +msgstr "通知URLを使用する場合は通知本文とタイトルが必要です" + +#: changedetectionio/forms.py +#, python-format +msgid "'%s' is not a valid AppRise URL." +msgstr "'%s' は有効なAppRise URLではありません。" + +#: changedetectionio/forms.py +#, python-format +msgid "RegEx '%s' is not a valid regular expression." +msgstr "正規表現 '%s' は有効な正規表現ではありません。" + +#: changedetectionio/forms.py +#, python-format +msgid "'%s' is not a valid XPath expression. (%s)" +msgstr "'%s' は有効なXPath式ではありません。(%s)" + +#: changedetectionio/forms.py +#, python-format +msgid "'%s' is not a valid JSONPath expression. (%s)" +msgstr "'%s' は有効なJSONPath式ではありません。(%s)" + +#: changedetectionio/forms.py +#, python-format +msgid "'%s' is not a valid jq expression. (%s)" +msgstr "'%s' は有効なjq式ではありません。(%s)" + +#: changedetectionio/forms.py +msgid "Empty value not allowed." +msgstr "空の値は許可されていません。" + +#: changedetectionio/forms.py +msgid "Invalid value." +msgstr "無効な値です。" + +#: changedetectionio/blueprint/imports/templates/import.html +#: changedetectionio/forms.py +msgid "URL" +msgstr "URL" + +#: changedetectionio/forms.py +msgid "Group tag" +msgstr "グループタグ" + +#: changedetectionio/forms.py +msgid "Watch" +msgstr "ウォッチ" + +#: changedetectionio/forms.py +msgid "Processor" +msgstr "プロセッサー" + +#: changedetectionio/forms.py +msgid "Edit > Watch" +msgstr "編集 > ウォッチ" + +#: changedetectionio/forms.py +msgid "Fetch Method" +msgstr "取得メソッド" + +#: changedetectionio/forms.py +msgid "Notification Body" +msgstr "通知本文" + +#: changedetectionio/forms.py +msgid "Notification format" +msgstr "通知フォーマット" + +#: changedetectionio/forms.py +msgid "Notification Title" +msgstr "通知タイトル" + +#: changedetectionio/forms.py +msgid "Notification URL List" +msgstr "通知URLリスト" + +#: changedetectionio/forms.py +msgid "Processor - What do you want to achieve?" +msgstr "プロセッサー - 何を達成したいですか?" + +#: changedetectionio/forms.py +msgid "Default timezone for watch check scheduler" +msgstr "ウォッチチェックスケジューラーのデフォルトタイムゾーン" + +#: changedetectionio/forms.py +msgid "Wait seconds before extracting text" +msgstr "テキスト抽出前の待機秒数" + +#: changedetectionio/forms.py +msgid "Should contain one or more seconds" +msgstr "1秒以上の値を入力してください" + +#: changedetectionio/forms.py +msgid "URLs" +msgstr "URL一覧" + +#: changedetectionio/forms.py +msgid "Upload .xlsx file" +msgstr ".xlsxファイルをアップロード" + +#: changedetectionio/forms.py +msgid "Must be .xlsx file!" +msgstr ".xlsxファイルである必要があります!" + +#: changedetectionio/forms.py +msgid "File mapping" +msgstr "ファイルマッピング" + +#: changedetectionio/forms.py +msgid "Operation" +msgstr "操作" + +#: changedetectionio/forms.py +msgid "Selector" +msgstr "セレクター" + +#: changedetectionio/forms.py +msgid "value" +msgstr "値" + +#: changedetectionio/forms.py +msgid "Time Between Check" +msgstr "チェック間隔" + +#: changedetectionio/forms.py +msgid "Use global settings for time between check and scheduler." +msgstr "チェック間隔とスケジューラーにはグローバル設定を使用する。" + +#: changedetectionio/forms.py +msgid "CSS/JSONPath/JQ/XPath Filters" +msgstr "CSS/JSONPath/JQ/XPath フィルタ" + +#: changedetectionio/forms.py +msgid "Remove elements" +msgstr "要素を削除" + +#: changedetectionio/forms.py +msgid "Extract text" +msgstr "テキストを抽出" + +#: changedetectionio/blueprint/imports/templates/import.html +#: changedetectionio/forms.py +msgid "Title" +msgstr "タイトル" + +#: changedetectionio/forms.py +msgid "Ignore lines containing" +msgstr "次を含む行を無視" + +#: changedetectionio/forms.py +msgid "Request body" +msgstr "リクエストボディ" + +#: changedetectionio/forms.py +msgid "Request method" +msgstr "リクエストメソッド" + +#: changedetectionio/forms.py +msgid "Ignore status codes (process non-2xx status codes as normal)" +msgstr "ステータスコードを無視(2xx以外のステータスコードを通常通り処理)" + +#: changedetectionio/forms.py +msgid "Only trigger when unique lines appear in all history" +msgstr "すべての履歴で新たなユニークな行が出現したときのみトリガー" + +#: changedetectionio/blueprint/ui/templates/edit.html +#: changedetectionio/forms.py +msgid "Remove duplicate lines of text" +msgstr "重複するテキスト行を削除" + +#: changedetectionio/forms.py +msgid "Sort text alphabetically" +msgstr "テキストをアルファベット順にソート" + +#: changedetectionio/forms.py +msgid "Strip ignored lines" +msgstr "無視行を除去" + +#: changedetectionio/forms.py +msgid "Trim whitespace before and after text" +msgstr "テキストの前後の空白を除去" + +#: changedetectionio/forms.py +msgid "Added lines" +msgstr "追加行" + +#: changedetectionio/forms.py +msgid "Replaced/changed lines" +msgstr "置換/変更行" + +#: changedetectionio/forms.py +msgid "Removed lines" +msgstr "削除行" + +#: changedetectionio/forms.py +msgid "Keyword triggers - Trigger/wait for text" +msgstr "キーワードトリガー - テキストのトリガー/待機" + +#: changedetectionio/forms.py +msgid "Block change-detection while text matches" +msgstr "テキストが一致している間は変更検知をブロック" + +#: changedetectionio/forms.py +msgid "Execute JavaScript before change detection" +msgstr "変更検知前にJavaScriptを実行" + +#: changedetectionio/blueprint/tags/templates/groups-overview.html +#: changedetectionio/forms.py +msgid "Save" +msgstr "保存" + +#: changedetectionio/forms.py +msgid "Proxy" +msgstr "プロキシ" + +#: changedetectionio/forms.py +msgid "Send a notification when the filter can no longer be found on the page" +msgstr "フィルタがページで見つからなくなったときに通知を送信" + +#: changedetectionio/forms.py +msgid "Muted" +msgstr "ミュート済み" + +#: changedetectionio/forms.py +msgid "On" +msgstr "オン" + +#: changedetectionio/blueprint/settings/templates/settings.html +#: changedetectionio/blueprint/tags/templates/edit-tag.html +#: changedetectionio/blueprint/ui/templates/edit.html +#: changedetectionio/forms.py +msgid "Notifications" +msgstr "通知" + +#: changedetectionio/forms.py +msgid "Attach screenshot to notification (where possible)" +msgstr "通知にスクリーンショットを添付(可能な場合)" + +#: changedetectionio/forms.py +msgid "Match" +msgstr "一致条件" + +#: changedetectionio/forms.py +msgid "Match all of the following" +msgstr "以下のすべてに一致" + +#: changedetectionio/forms.py +msgid "Match any of the following" +msgstr "以下のいずれかに一致" + +#: changedetectionio/forms.py +msgid "Use page in list" +msgstr "リストでページの <title> を使用" + +#: changedetectionio/forms.py +msgid "Number of history items per watch to keep" +msgstr "ウォッチごとに保持する履歴の件数" + +#: changedetectionio/forms.py +msgid "Body must be empty when Request Method is set to GET" +msgstr "リクエストメソッドがGETの場合、ボディは空にしてください" + +#: changedetectionio/forms.py +#, python-format +msgid "Invalid template syntax configuration: %(error)s" +msgstr "無効なテンプレート構文設定: %(error)s" + +#: changedetectionio/forms.py +#, python-format +msgid "Invalid template syntax: %(error)s" +msgstr "無効なテンプレート構文: %(error)s" + +#: changedetectionio/forms.py +#, python-format +msgid "Invalid template syntax in \"%(header)s\" header: %(error)s" +msgstr "\"%(header)s\" ヘッダーのテンプレート構文が無効です: %(error)s" + +#: changedetectionio/forms.py +msgid "Name" +msgstr "名前" + +#: changedetectionio/forms.py +msgid "Proxy URL" +msgstr "プロキシURL" + +#: changedetectionio/forms.py +msgid "Proxy URLs must start with http://, https:// or socks5://" +msgstr "プロキシURLはhttp://、https://、またはsocks5://で始まる必要があります" + +#: changedetectionio/forms.py +msgid "Browser connection URL" +msgstr "ブラウザ接続URL" + +#: changedetectionio/forms.py +msgid "Browser URLs must start with wss:// or ws://" +msgstr "ブラウザURLはwss://またはws://で始まる必要があります" + +#: changedetectionio/forms.py +msgid "Plaintext requests" +msgstr "プレーンテキストリクエスト" + +#: changedetectionio/forms.py +msgid "Chrome requests" +msgstr "Chromeリクエスト" + +#: changedetectionio/forms.py +msgid "Default proxy" +msgstr "デフォルトプロキシ" + +#: changedetectionio/forms.py +msgid "Random jitter seconds ± check" +msgstr "ランダムジッター秒数 ± チェック" + +#: changedetectionio/forms.py +msgid "Number of fetch workers" +msgstr "フェッチワーカーの数" + +#: changedetectionio/forms.py +msgid "Should be between 1 and 50" +msgstr "1から50の間で指定してください" + +#: changedetectionio/forms.py +msgid "Requests timeout in seconds" +msgstr "リクエストのタイムアウト(秒)" + +#: changedetectionio/forms.py +msgid "Should be between 1 and 999" +msgstr "1から999の間で指定してください" + +#: changedetectionio/forms.py +msgid "Default User-Agent overrides" +msgstr "デフォルトUser-Agentの上書き" + +#: changedetectionio/forms.py +msgid "Both a name, and a Proxy URL is required." +msgstr "名前とプロキシURLの両方が必要です。" + +#: changedetectionio/forms.py +msgid "Open 'History' page in a new tab" +msgstr "「履歴」ページを新しいタブで開く" + +#: changedetectionio/forms.py +msgid "Realtime UI Updates Enabled" +msgstr "リアルタイムUI更新を有効化" + +#: changedetectionio/forms.py +msgid "Favicons Enabled" +msgstr "ファビコンを有効化" + +#: changedetectionio/forms.py +msgid "Use page <title> in watch overview list" +msgstr "ウォッチ一覧リストでページの <title> を使用" + +#: changedetectionio/forms.py +msgid "API access token security check enabled" +msgstr "APIアクセストークンのセキュリティチェックを有効化" + +#: changedetectionio/forms.py +msgid "Notification base URL override" +msgstr "通知ベースURLの上書き" + +#: changedetectionio/forms.py +msgid "Treat empty pages as a change?" +msgstr "空のページを変更としてみなしますか?" + +#: changedetectionio/forms.py +msgid "Ignore Text" +msgstr "無視するテキスト" + +#: changedetectionio/forms.py +msgid "Ignore whitespace" +msgstr "空白を無視" + +#: changedetectionio/forms.py +#: changedetectionio/processors/image_ssim_diff/forms.py +msgid "Must be between 0 and 100" +msgstr "0から100の間で指定してください" + +#: changedetectionio/forms.py changedetectionio/templates/login.html +msgid "Password" +msgstr "パスワード" + +#: changedetectionio/forms.py +msgid "Pager size" +msgstr "ページサイズ" + +#: changedetectionio/forms.py +msgid "Should be atleast zero (disabled)" +msgstr "0以上の値を入力してください(0で無効化)" + +#: changedetectionio/forms.py +msgid "RSS Content format" +msgstr "RSSコンテンツ形式" + +#: changedetectionio/forms.py +msgid "RSS <description> body built from" +msgstr "RSS <description> 本文の構築元" + +#: changedetectionio/forms.py +msgid "RSS \"System default\" template override" +msgstr "RSS「システムデフォルト」テンプレートの上書き" + +#: changedetectionio/forms.py +msgid "Remove password" +msgstr "パスワードを削除" + +#: changedetectionio/forms.py +msgid "Render anchor tag content" +msgstr "アンカータグのコンテンツをレンダリング" + +#: changedetectionio/forms.py +msgid "Allow anonymous access to watch history page when password is enabled" +msgstr "パスワードが有効な場合でもウォッチ履歴ページへの匿名アクセスを許可" + +#: changedetectionio/forms.py +msgid "Hide muted watches from RSS feed" +msgstr "ミュートされたウォッチをRSSフィードから非表示にする" + +#: changedetectionio/forms.py +msgid "Enable RSS reader mode " +msgstr "RSSリーダーモードを有効化 " + +#: changedetectionio/forms.py +msgid "Number of changes to show in watch RSS feed" +msgstr "ウォッチRSSフィードに表示する変更件数" + +#: changedetectionio/forms.py +msgid "Should contain zero or more attempts" +msgstr "0以上の試行回数を入力してください" + +#: changedetectionio/forms.py +msgid "Number of times the filter can be missing before sending a notification" +msgstr "通知を送信する前にフィルタが見つからない回数" + +#: changedetectionio/forms.py +msgid "RegEx to extract" +msgstr "抽出する正規表現" + +#: changedetectionio/forms.py +msgid "Extract as CSV" +msgstr "CSVとして抽出" + +#: changedetectionio/processors/extract.py +msgid "No matches found while scanning all of the watch history for that RegEx." +msgstr "その正規表現についてウォッチ履歴全体をスキャンしましたが、一致するものが見つかりませんでした。" + +#: changedetectionio/processors/image_ssim_diff/difference.py +msgid "Not enough history to compare. Need at least 2 snapshots." +msgstr "比較するための履歴が不足しています。スナップショットが2件以上必要です。" + +#: changedetectionio/processors/image_ssim_diff/difference.py +#, python-brace-format +msgid "Failed to load screenshots: {}" +msgstr "スクリーンショットの読み込みに失敗しました: {}" + +#: changedetectionio/processors/image_ssim_diff/difference.py +#, python-brace-format +msgid "Failed to calculate diff: {}" +msgstr "差分の計算に失敗しました: {}" + +#: changedetectionio/processors/image_ssim_diff/forms.py +msgid "Bounding box value is too long" +msgstr "バウンディングボックスの値が長すぎます" + +#: changedetectionio/processors/image_ssim_diff/forms.py +msgid "Bounding box must be in format: x,y,width,height (integers only)" +msgstr "バウンディングボックスは x,y,width,height の形式(整数のみ)で指定してください" + +#: changedetectionio/processors/image_ssim_diff/forms.py +msgid "Bounding box values must be non-negative" +msgstr "バウンディングボックスの値は非負でなければなりません" + +#: changedetectionio/processors/image_ssim_diff/forms.py +msgid "Bounding box values are too large" +msgstr "バウンディングボックスの値が大きすぎます" + +#: changedetectionio/processors/image_ssim_diff/forms.py +msgid "Selection mode must be either \"element\" or \"draw\"" +msgstr "選択モードは「element」または「draw」でなければなりません" + +#: changedetectionio/processors/image_ssim_diff/forms.py +msgid "Minimum Change Percentage" +msgstr "最小変更率" + +#: changedetectionio/processors/image_ssim_diff/forms.py +msgid "Pixel Difference Sensitivity" +msgstr "ピクセル差分の感度" + +#: changedetectionio/processors/image_ssim_diff/forms.py +msgid "Use global default" +msgstr "グローバルデフォルトを使用" + +#: changedetectionio/processors/image_ssim_diff/forms.py +msgid "Bounding Box" +msgstr "バウンディングボックス" + +#: changedetectionio/processors/image_ssim_diff/forms.py +msgid "Selection Mode" +msgstr "選択モード" + +#: changedetectionio/processors/image_ssim_diff/forms.py +msgid "Selection mode value is too long" +msgstr "選択モードの値が長すぎます" + +#: changedetectionio/processors/image_ssim_diff/forms.py +msgid "Screenshot Comparison" +msgstr "スクリーンショット比較" + +#: changedetectionio/processors/image_ssim_diff/preview.py +msgid "Preview unavailable - No snapshots captured yet" +msgstr "プレビューを表示できません - まだスナップショットが取得されていません" + +#: changedetectionio/processors/image_ssim_diff/processor.py +msgid "Visual / Image screenshot change detection" +msgstr "ビジュアル / 画像スクリーンショット変更検知" + +#: changedetectionio/processors/image_ssim_diff/processor.py +msgid "Compares screenshots using fast OpenCV algorithm, 10-100x faster than SSIM" +msgstr "高速OpenCVアルゴリズムを使用してスクリーンショットを比較します。SSIMより10〜100倍高速" + +#: changedetectionio/processors/restock_diff/forms.py +msgid "Re-stock detection" +msgstr "在庫補充検知" + +#: changedetectionio/processors/restock_diff/forms.py +msgid "In Stock only (Out Of Stock -> In Stock only)" +msgstr "在庫あり時のみ(在庫切れ → 在庫ありの変化のみ)" + +#: changedetectionio/processors/restock_diff/forms.py +msgid "Any availability changes" +msgstr "在庫状態のいかなる変化も" + +#: changedetectionio/processors/restock_diff/forms.py +msgid "Off, don't follow availability/restock" +msgstr "オフ:在庫状態を追跡しない" + +#: changedetectionio/processors/restock_diff/forms.py +msgid "Below price to trigger notification" +msgstr "通知をトリガーする下限価格" + +#: changedetectionio/processors/restock_diff/forms.py +msgid "No limit" +msgstr "制限なし" + +#: changedetectionio/processors/restock_diff/forms.py +msgid "Above price to trigger notification" +msgstr "通知をトリガーする上限価格" + +#: changedetectionio/processors/restock_diff/forms.py +#, python-format +msgid "Threshold in %% for price changes since the original price" +msgstr "元の価格からの価格変動率のしきい値(%%)" + +#: changedetectionio/processors/restock_diff/forms.py +msgid "Should be between 0 and 100" +msgstr "0から100の間で指定してください" + +#: changedetectionio/processors/restock_diff/forms.py +msgid "Follow price changes" +msgstr "価格変動を追跡" + +#: changedetectionio/processors/restock_diff/forms.py +msgid "Restock & Price Detection" +msgstr "在庫補充&価格検知" + +#: changedetectionio/processors/restock_diff/processor.py +msgid "Re-stock & Price detection for pages with a SINGLE product" +msgstr "単一製品ページの在庫補充&価格検知" + +#: changedetectionio/processors/restock_diff/processor.py +msgid "Detects if the product goes back to in-stock" +msgstr "製品が在庫ありに戻ったかどうかを検知します" + +#: changedetectionio/processors/text_json_diff/processor.py +msgid "Webpage Text/HTML, JSON and PDF changes" +msgstr "ウェブページのテキスト/HTML、JSONおよびPDFの変更" + +#: changedetectionio/processors/text_json_diff/processor.py +msgid "Detects all text changes where possible" +msgstr "可能な限りすべてのテキスト変更を検知します" + +#: changedetectionio/store/__init__.py +#, python-brace-format +msgid "Error fetching metadata for {}" +msgstr "{} のメタデータ取得中にエラーが発生しました" + +#: changedetectionio/store/__init__.py +msgid "Watch protocol is not permitted or invalid URL format" +msgstr "ウォッチのプロトコルが許可されていないか、URL形式が無効です" + +#: changedetectionio/store/__init__.py +#, python-brace-format +msgid "Watch limit reached ({}/{} watches). Cannot add more watches." +msgstr "ウォッチの上限に達しました({}/{} ウォッチ)。これ以上ウォッチを追加できません。" + +#: changedetectionio/templates/_common_fields.html +msgid "Body for all notifications — You can use" +msgstr "すべての通知の本文 — 以下を使用できます:" + +#: changedetectionio/templates/_common_fields.html +msgid "templating in the notification title, body and URL, and tokens from below." +msgstr "通知のタイトル、本文、URLでテンプレートを使用し、以下のトークンも利用できます。" + +#: changedetectionio/templates/_common_fields.html +msgid "Show token/placeholders" +msgstr "トークン/プレースホルダーを表示" + +#: changedetectionio/templates/_common_fields.html +msgid "Token" +msgstr "トークン" + +#: changedetectionio/templates/_common_fields.html +msgid "Description" +msgstr "説明" + +#: changedetectionio/templates/_common_fields.html +msgid "The URL of the changedetection.io instance you are running." +msgstr "実行中の changedetection.io インスタンスのURL。" + +#: changedetectionio/templates/_common_fields.html +msgid "The URL being watched." +msgstr "監視中のURL。" + +#: changedetectionio/templates/_common_fields.html +msgid "The UUID of the watch." +msgstr "ウォッチのUUID。" + +#: changedetectionio/templates/_common_fields.html +msgid "The page title of the watch, uses <title> if not set, falls back to URL" +msgstr "ウォッチのページタイトル。設定されていない場合は <title> を使用し、それもなければURLにフォールバックします" + +#: changedetectionio/templates/_common_fields.html +msgid "The watch group / tag" +msgstr "ウォッチのグループ / タグ" + +#: changedetectionio/templates/_common_fields.html +msgid "The URL of the preview page generated by changedetection.io." +msgstr "changedetection.io が生成したプレビューページのURL。" + +#: changedetectionio/templates/_common_fields.html +msgid "The URL of the diff output for the watch." +msgstr "ウォッチの差分出力のURL。" + +#: changedetectionio/templates/_common_fields.html +msgid "The diff output - only changes, additions, and removals" +msgstr "差分出力 - 変更、追加、削除のみ" + +#: changedetectionio/templates/_common_fields.html +msgid "The diff output - only changes, additions, and removals —" +msgstr "差分出力 - 変更、追加、削除のみ —" + +#: changedetectionio/templates/_common_fields.html +msgid "Without (added) prefix or colors" +msgstr "(追加済み)プレフィックスや色なし" + +#: changedetectionio/templates/_common_fields.html +msgid "The diff output - only changes and additions" +msgstr "差分出力 - 変更と追加のみ" + +#: changedetectionio/templates/_common_fields.html +msgid "The diff output - only changes and additions —" +msgstr "差分出力 - 変更と追加のみ —" + +#: changedetectionio/templates/_common_fields.html +msgid "The diff output - only changes and removals" +msgstr "差分出力 - 変更と削除のみ" + +#: changedetectionio/templates/_common_fields.html +msgid "The diff output - only changes and removals —" +msgstr "差分出力 - 変更と削除のみ —" + +#: changedetectionio/templates/_common_fields.html +msgid "The diff output - full difference output" +msgstr "差分出力 - 完全な差分出力" + +#: changedetectionio/templates/_common_fields.html +msgid "The diff output - full difference output —" +msgstr "差分出力 - 完全な差分出力 —" + +#: changedetectionio/templates/_common_fields.html +msgid "The diff output - patch in unified format" +msgstr "差分出力 - 統一フォーマットのパッチ" + +#: changedetectionio/templates/_common_fields.html +msgid "" +"The current snapshot text contents value, useful when combined with JSON " +"or CSS filters" +msgstr "現在のスナップショットのテキスト内容の値。JSONやCSSフィルタと組み合わせると便利です" + +#: changedetectionio/templates/_common_fields.html +msgid "Text that tripped the trigger from filters" +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 "警告:" + +#: changedetectionio/templates/_common_fields.html +msgid "and" +msgstr "および" + +#: changedetectionio/templates/_common_fields.html +msgid "depend on how the difference algorithm perceives the change." +msgstr "の内容は、差分アルゴリズムが変更をどのように認識するかによって異なります。" + +#: changedetectionio/templates/_common_fields.html +msgid "" +"For example, an addition or removal could be perceived as a change in " +"some cases." +msgstr "例えば、追加や削除が場合によっては変更として認識されることがあります。" + +#: changedetectionio/templates/_common_fields.html +msgid "More Here" +msgstr "詳細はこちら" + +#: changedetectionio/templates/_common_fields.html +msgid "AppRise Notification URLs" +msgstr "AppRise 通知URL" + +#: changedetectionio/templates/_common_fields.html +msgid "for notification to just about any service!" +msgstr "ほぼすべてのサービスへの通知に対応!" + +#: changedetectionio/templates/_common_fields.html +msgid "" +"Please read the notification services wiki here for important " +"configuration notes" +msgstr "重要な設定に関するメモについては、通知サービスのWikiをこちらでお読みください" + +#: changedetectionio/templates/_common_fields.html +#: changedetectionio/templates/edit/text-options.html +msgid "Use" +msgstr "使用:" + +#: changedetectionio/templates/_common_fields.html +msgid "Show advanced help and tips" +msgstr "詳細なヘルプとヒントを表示" + +#: changedetectionio/templates/_common_fields.html +msgid "(or" +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 "がサポートする通知テキストは最大" + +#: changedetectionio/templates/_common_fields.html +msgid "2,000 characters" +msgstr "2,000文字" + +#: changedetectionio/templates/_common_fields.html +msgid "of notification text, including the title." +msgstr "です(タイトルを含む)。" + +#: changedetectionio/templates/_common_fields.html +msgid "" +"bots can't send messages to other bots, so you should specify chat ID of " +"non-bot user." +msgstr "ボットは他のボットにメッセージを送信できないため、ボット以外のユーザーのチャットIDを指定してください。" + +#: changedetectionio/templates/_common_fields.html +msgid "only supports very limited HTML and can fail when extra tags are sent," +msgstr "非常に限られたHTMLのみをサポートしており、追加タグが送信されると失敗する場合があります。" + +#: changedetectionio/templates/_common_fields.html +msgid "(or use plaintext/markdown format)" +msgstr "(またはプレーンテキスト/マークダウン形式を使用)" + +#: changedetectionio/templates/_common_fields.html +msgid "for direct API calls (or omit the" +msgstr "直接APIコールの場合(または省略:" + +#: changedetectionio/templates/_common_fields.html +msgid "for non-SSL ie" +msgstr "非SSLの場合、例:" + +#: changedetectionio/templates/_common_fields.html +msgid "more help here" +msgstr "詳細なヘルプはこちら" + +# 訳注: "Accepts the {{token}} placeholders listed below" +# → 「{{token}} 以下のプレースホルダーを受け付けます」 +# 前半の断片に訳を置くと語順が崩れるため、後半にまとめた +#: changedetectionio/templates/_common_fields.html +msgid "Accepts the" +msgstr "" + +#: changedetectionio/templates/_common_fields.html +msgid "placeholders listed below" +msgstr "以下のプレースホルダーを受け付けます" + +#: changedetectionio/templates/_common_fields.html +msgid "Send test notification" +msgstr "テスト通知を送信" + +#: changedetectionio/templates/_common_fields.html +msgid "Add email" +msgstr "メールを追加" + +#: changedetectionio/templates/_common_fields.html +msgid "Add an email address" +msgstr "メールアドレスを追加" + +#: changedetectionio/templates/_common_fields.html +msgid "Notification debug logs" +msgstr "通知デバッグログ" + +#: changedetectionio/templates/_common_fields.html +msgid "Processing.." +msgstr "処理中.." + +#: changedetectionio/templates/_common_fields.html +msgid "Title for all notifications" +msgstr "すべての通知のタイトル" + +#: changedetectionio/templates/_common_fields.html +msgid "For JSON payloads, use" +msgstr "JSONペイロードの場合は以下を使用:" + +#: changedetectionio/templates/_common_fields.html +msgid "without quotes for automatic escaping, for example -" +msgstr "自動エスケープのための引用符なし。例:" + +#: changedetectionio/templates/_common_fields.html +msgid "URL encoding, use" +msgstr "URLエンコードの場合は使用:" + +#: changedetectionio/templates/_common_fields.html +msgid "for example -" +msgstr "例:" + +#: changedetectionio/templates/_common_fields.html +msgid "Regular-expression replace, use" +msgstr "正規表現による置換の場合は使用:" + +#: changedetectionio/templates/_common_fields.html +msgid "" +"For a complete reference of all Jinja2 built-in filters, users can refer " +"to the" +msgstr "すべての Jinja2 組み込みフィルタの完全なリファレンスは以下を参照してください:" + +#: changedetectionio/templates/_common_fields.html +msgid "Format for all notifications" +msgstr "すべての通知のフォーマット" + +#: changedetectionio/templates/_helpers.html +msgid "Entry" +msgstr "エントリー" + +#: changedetectionio/templates/_helpers.html +msgid "Actions" +msgstr "アクション" + +#: changedetectionio/templates/_helpers.html +msgid "Add a row/rule after" +msgstr "後に行/ルールを追加" + +#: changedetectionio/templates/_helpers.html +msgid "Remove this row/rule" +msgstr "この行/ルールを削除" + +#: changedetectionio/templates/_helpers.html +msgid "Verify this rule against current snapshot" +msgstr "現在のスナップショットに対してこのルールを検証" + +#: changedetectionio/templates/_helpers.html +msgid "" +"Error - This watch needs Chrome (with playwright/sockpuppetbrowser), but " +"Chrome based fetching is not enabled." +msgstr "エラー - このウォッチは Chrome(playwright/sockpuppetbrowser付き)が必要ですが、Chromeベースの取得が有効になっていません。" + +#: changedetectionio/templates/_helpers.html +msgid "Alternatively try our" +msgstr "または以下をお試しください:" + +#: changedetectionio/templates/_helpers.html +msgid "" +"very affordable subscription based service which has all this setup for " +"you" +msgstr "すべての設定が完了した手頃な価格のサブスクリプションサービス" + +#: changedetectionio/templates/_helpers.html +msgid "You may need to" +msgstr "次の操作が必要かもしれません:" + +#: changedetectionio/templates/_helpers.html +msgid "Enable playwright environment variable" +msgstr "playwright 環境変数を有効にする" + +# 訳注: "and uncomment the [code] in the [filename] file" +# → 「そして [code] のコメントを [filename] ファイル内で解除してください」 +# 3つの断片に訳を分散させて自然な語順にした +#: changedetectionio/templates/_helpers.html +msgid "and uncomment the" +msgstr "そして" + +#: changedetectionio/templates/_helpers.html +msgid "in the" +msgstr "のコメントを" + +#: changedetectionio/templates/_helpers.html +msgid "file" +msgstr "ファイル内で解除してください" + +#: changedetectionio/templates/_helpers.html +msgid "Set a hourly/week day schedule" +msgstr "時間/曜日スケジュールを設定" + +#: changedetectionio/templates/_helpers.html +msgid "Schedule time limits" +msgstr "スケジュールの時間制限" + +#: changedetectionio/templates/_helpers.html +msgid "Business hours" +msgstr "営業時間" + +#: changedetectionio/templates/_helpers.html +msgid "Weekends" +msgstr "週末" + +#: changedetectionio/templates/_helpers.html +msgid "Reset" +msgstr "リセット" + +#: changedetectionio/templates/_helpers.html +msgid "" +"Warning, one or more of your 'days' has a duration that would extend into" +" the next day." +msgstr "警告:1つ以上の「曜日」の期間が翌日まで延長されています。" + +#: changedetectionio/templates/_helpers.html +msgid "This could have unintended consequences." +msgstr "これは意図しない結果を引き起こす可能性があります。" + +#: changedetectionio/templates/_helpers.html +msgid "More help and examples about using the scheduler" +msgstr "スケジューラーの使用に関する詳細なヘルプと例" + +#: changedetectionio/templates/_helpers.html +msgid "Want to use a time schedule?" +msgstr "タイムスケジュールを使用しますか?" + +#: changedetectionio/templates/_helpers.html +msgid "First confirm/save your Time Zone Settings" +msgstr "まずタイムゾーン設定を確認/保存してください" + +#: changedetectionio/templates/_helpers.html +msgid "" +"Triggers a change if this text appears, AND something changed in the " +"document." +msgstr "このテキストが表示され、かつドキュメントに何か変更があった場合に変更をトリガーします。" + +#: changedetectionio/templates/_helpers.html +msgid "Triggered text" +msgstr "トリガーされたテキスト" + +#: changedetectionio/templates/_helpers.html +msgid "Ignored for calculating changes, but still shown." +msgstr "変更の計算では無視されますが、表示はされます。" + +#: changedetectionio/templates/_helpers.html +msgid "Ignored text" +msgstr "無視されたテキスト" + +#: changedetectionio/templates/_helpers.html +msgid "No change-detection will occur because this text exists." +msgstr "このテキストが存在するため、変更検知は実行されません。" + +#: changedetectionio/templates/_helpers.html +msgid "Blocked text" +msgstr "ブロックされたテキスト" + +#: changedetectionio/templates/base.html +msgid "Search, or Use Alt+S Key" +msgstr "検索、またはAlt+Sキーを使用" + +#: changedetectionio/templates/base.html +msgid "Real-time updates offline" +msgstr "リアルタイム更新オフライン" + +#: changedetectionio/templates/base.html +msgid "Select Language" +msgstr "言語を選択" + +#: changedetectionio/templates/base.html +msgid "Auto-detect from browser" +msgstr "ブラウザから自動検出" + +#: changedetectionio/templates/base.html +msgid "" +"Language support is in beta, please help us improve by opening a PR on " +"GitHub with any updates." +msgstr "言語サポートはベータ版です。GitHubでPRを作成して改善にご協力ください。" + +#: changedetectionio/templates/base.html +msgid "Search" +msgstr "検索" + +#: changedetectionio/templates/base.html +msgid "URL or Title" +msgstr "URLまたはタイトル" + +#: changedetectionio/templates/base.html +msgid "in" +msgstr "" + +#: changedetectionio/templates/base.html +msgid "Enter search term..." +msgstr "検索語を入力..." + +#: changedetectionio/templates/edit/text-options.html +msgid "" +"Text to wait for before triggering a change/notification, all text and " +"regex are tested case-insensitive." +msgstr "変更/通知をトリガーする前に待つテキスト。すべてのテキストと正規表現は大文字小文字を区別せずにテストされます。" + +#: changedetectionio/templates/edit/text-options.html +msgid "" +"Trigger text is processed from the result-text that comes out of any " +"CSS/JSON Filters for this monitor" +msgstr "トリガーテキストは、このモニターのCSS/JSONフィルタから出力される結果テキストから処理されます" + +#: changedetectionio/templates/edit/text-options.html +msgid "Each line is processed separately (think of each line as \"OR\")" +msgstr "各行は個別に処理されます(各行を「OR」として考えてください)" + +#: changedetectionio/templates/edit/text-options.html +msgid "Note: Wrap in forward slash / to use regex example:" +msgstr "注意:正規表現を使用する場合はスラッシュで囲んでください。例:" + +#: changedetectionio/templates/edit/text-options.html +msgid "You can also use" +msgstr "次も使用できます:" + +#: changedetectionio/templates/edit/text-options.html +msgid "conditions" +msgstr "条件" + +#: changedetectionio/templates/edit/text-options.html +msgid "\"Page text\" - with Contains, Starts With, Not Contains and many more" +msgstr "「ページテキスト」- 「含む」「始まる」「含まない」などの条件" + +#: changedetectionio/templates/edit/text-options.html +msgid "" +"Matching text will be ignored in the text snapshot (you can still see it " +"but it wont trigger a change)" +msgstr "一致するテキストはテキストスナップショットで無視されます(表示はされますが変更はトリガーされません)" + +#: changedetectionio/templates/edit/text-options.html +msgid "" +"Block change-detection while this text is on the page, all text and regex" +" are tested case-insensitive, good for waiting for when a product is " +"available again" +msgstr "このテキストがページにある間は変更検知をブロックします。すべてのテキストと正規表現は大文字小文字を区別せずにテストされます。製品が再入荷するまで待つのに便利です" + +#: changedetectionio/templates/edit/text-options.html +msgid "" +"Block text is processed from the result-text that comes out of any " +"CSS/JSON Filters for this monitor" +msgstr "ブロックテキストは、このモニターのCSS/JSONフィルタから出力される結果テキストから処理されます" + +#: changedetectionio/templates/edit/text-options.html +msgid "All lines here must not exist (think of each line as \"OR\")" +msgstr "ここのすべての行が存在しない必要があります(各行を「OR」として考えてください)" + +#: 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:" +msgstr "他のフィルタの後に正規表現または文字列マッチを使用して最終出力のテキストを行ごとに抽出します:" + +#: changedetectionio/templates/edit/text-options.html +msgid "Regular expression - example" +msgstr "正規表現 - 例" + +#: changedetectionio/templates/edit/text-options.html +msgid "Don't forget to consider the white-space at the start of a line" +msgstr "行頭の空白を考慮することを忘れないでください" + +#: changedetectionio/templates/edit/text-options.html +msgid "type flags (more" +msgstr "タイプフラグ(詳細" + +#: changedetectionio/templates/edit/text-options.html +msgid "information here" +msgstr "情報はこちら" + +#: changedetectionio/templates/edit/text-options.html +msgid "Keyword example - example" +msgstr "キーワード例 - 例" + +#: changedetectionio/templates/edit/text-options.html +msgid "Use groups to extract just that text - example" +msgstr "グループを使用してテキストのみを抽出する - 例" + +#: changedetectionio/templates/edit/text-options.html +msgid "returns a list of years only" +msgstr "年のリストのみを返します" + +#: changedetectionio/templates/edit/text-options.html +msgid "Example - match lines containing a keyword" +msgstr "例 - キーワードを含む行にマッチ" + +#: changedetectionio/templates/edit/text-options.html +msgid "One line per regular-expression/string match" +msgstr "正規表現/文字列マッチごとに1行" + +#: changedetectionio/templates/login.html +msgid "Login" +msgstr "ログイン" + +#: changedetectionio/templates/menu.html +msgid "GROUPS" +msgstr "グループ" + +#: changedetectionio/templates/menu.html +msgid "SETTINGS" +msgstr "設定" + +#: changedetectionio/templates/menu.html +msgid "IMPORT" +msgstr "インポート" + +#: changedetectionio/templates/menu.html +msgid "Resume automatic scheduling" +msgstr "自動スケジューリングを再開" + +#: changedetectionio/templates/menu.html +msgid "Pause auto-queue scheduling of watches" +msgstr "ウォッチの自動キュースケジューリングを一時停止" + +#: changedetectionio/templates/menu.html +msgid "Scheduling is paused - click to resume" +msgstr "スケジューリングは一時停止中 - クリックして再開" + +#: changedetectionio/templates/menu.html +msgid "Unmute notifications" +msgstr "通知のミュートを解除" + +#: changedetectionio/templates/menu.html +msgid "Mute notifications" +msgstr "通知をミュート" + +#: changedetectionio/templates/menu.html +msgid "Notifications are muted - click to unmute" +msgstr "通知はミュート中 - クリックして解除" + +#: changedetectionio/templates/menu.html +msgid "EDIT" +msgstr "編集" + +#: changedetectionio/templates/menu.html +msgid "LOG OUT" +msgstr "ログアウト" + +#: changedetectionio/templates/menu.html +msgid "Website Change Detection and Notification." +msgstr "ウェブサイト変更検知と通知。" + +#: changedetectionio/templates/menu.html +msgid "Toggle Light/Dark Mode" +msgstr "ライト/ダークモードの切り替え" + +#: changedetectionio/templates/menu.html +msgid "Toggle light/dark mode" +msgstr "ライト/ダークモードを切り替え" + +#: changedetectionio/templates/menu.html +msgid "Change Language" +msgstr "言語の変更" + +#: changedetectionio/templates/menu.html +msgid "Change language" +msgstr "言語を変更" + +#: changedetectionio/widgets/ternary_boolean.py +msgid "Yes" +msgstr "はい" + +#: changedetectionio/widgets/ternary_boolean.py +msgid "No" +msgstr "いいえ" + +#: changedetectionio/widgets/ternary_boolean.py +msgid "Main settings" +msgstr "メイン設定" + From 746e213398b24bdf72702a0d72be169b8b43864e Mon Sep 17 00:00:00 2001 From: Michal Zuber <info@nevilleweb.sk> Date: Wed, 8 Apr 2026 10:17:02 +0100 Subject: [PATCH 7/7] Update Selenium RemoteConnection to use ClientConfig for timeout (#4027) --- .../content_fetchers/webdriver_selenium.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/changedetectionio/content_fetchers/webdriver_selenium.py b/changedetectionio/content_fetchers/webdriver_selenium.py index 0ce08b234..448efe97f 100644 --- a/changedetectionio/content_fetchers/webdriver_selenium.py +++ b/changedetectionio/content_fetchers/webdriver_selenium.py @@ -104,15 +104,17 @@ class fetcher(Fetcher): from selenium.webdriver.remote.remote_connection import RemoteConnection from selenium.webdriver.remote.webdriver import WebDriver as RemoteWebDriver + from selenium.webdriver.remote.client_config import ClientConfig + from urllib3.util import Timeout driver = None try: - # Create the RemoteConnection and set timeout (e.g., 30 seconds) - remote_connection = RemoteConnection( - self.browser_connection_url, + connection_timeout = int(os.getenv("WEBDRIVER_CONNECTION_TIMEOUT", 90)) + client_config = ClientConfig( + remote_server_addr=self.browser_connection_url, + timeout=Timeout(connect=connection_timeout, total=connection_timeout) ) - remote_connection.set_timeout(30) # seconds + remote_connection = RemoteConnection(client_config=client_config) - # Now create the driver with the RemoteConnection driver = RemoteWebDriver( command_executor=remote_connection, options=options