From f7898fa89daa0eed601dd1acac7569ca5ba93fb1 Mon Sep 17 00:00:00 2001 From: dakkar Date: Wed, 12 Jun 2024 15:06:01 +0100 Subject: [PATCH] teach the locale system that sometimes braces are just braces --- locales/en-US.yml | 2 +- locales/generateDTS.js | 5 ++++- locales/index.d.ts | 4 ++-- locales/index.js | 6 +++++- locales/ja-JP.yml | 2 +- 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/locales/en-US.yml b/locales/en-US.yml index 23884aa043..b469b312a5 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -754,7 +754,7 @@ alwaysMarkSensitive: "Mark as sensitive by default" loadRawImages: "Load original images instead of showing thumbnails" searchEngine: "Search Engine For Search MFM" searchEngineOther: "Other" -searchEngineCustomURIDescription: "The custom URI must be input in the format like \"https://www.google.com/search?q={query}\" or \"https://www.google.com/search?q=%s\"." +searchEngineCustomURIDescription: "The custom URI must be input in the format like \"https://www.google.com/search?q=\\{query}\" or \"https://www.google.com/search?q=%s\"." searchEngineCusomURI: "Custom URI" disableShowingAnimatedImages: "Don't play animated images" highlightSensitiveMedia: "Highlight sensitive media" diff --git a/locales/generateDTS.js b/locales/generateDTS.js index 49807144ec..a175247445 100644 --- a/locales/generateDTS.js +++ b/locales/generateDTS.js @@ -6,7 +6,10 @@ import ts from 'typescript'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); -const parameterRegExp = /\{(\w+)\}/g; +// braces preceded by backslashes are literal, they don't represent +// parameters; they get cleaned up by `locales/index.js` before +// getting shipped to the browser +const parameterRegExp = /(?; + "searchEngineCustomURIDescription": string; /** * カスタム URI */ diff --git a/locales/index.js b/locales/index.js index 650e552337..c7a693fb77 100644 --- a/locales/index.js +++ b/locales/index.js @@ -49,7 +49,11 @@ const primaries = { }; // 何故か文字列にバックスペース文字が混入することがあり、YAMLが壊れるので取り除く -const clean = (text) => text.replace(new RegExp(String.fromCodePoint(0x08), 'g'), ''); +// +// also, we remove the backslashes in front of open braces (the +// backslashes are only needed to tell `generateDTS.js` that the +// braces do not represent parameters) +const clean = (text) => text.replace(new RegExp(String.fromCodePoint(0x08), 'g'), '').replaceAll(new RegExp(/\\+\{/,'g'), '{'); export function build() { const locales = languages.reduce((a, c) => (a[c] = yaml.load(clean(fs.readFileSync(new URL(`${c}.yml`, import.meta.url), 'utf-8'))) || {}, a), {}); diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index 293f8ec380..8c0ef3d55f 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -753,7 +753,7 @@ alwaysMarkSensitive: "デフォルトでメディアをセンシティブ設定 loadRawImages: "添付画像のサムネイルをオリジナル画質にする" searchEngine: "検索MFMの検索エンジン" searchEngineOther: "他" -searchEngineCustomURIDescription: "カスタム URI は、\"https://www.google.com/search?q={query}\" や \"https://www.google.com/search?q=%s\" のような形式で入力する必要があります。" +searchEngineCustomURIDescription: "カスタム URI は、\"https://www.google.com/search?q=\\{query}\" や \"https://www.google.com/search?q=%s\" のような形式で入力する必要があります。" searchEngineCusomURI: "カスタム URI" disableShowingAnimatedImages: "アニメーション画像を再生しない" highlightSensitiveMedia: "メディアがセンシティブであることを分かりやすく表示"