Latest commit

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Stringer

Stringer i18n Helper

The VS Code companion for Stringer CLI

Add i18n keys manually • Preview translations inline • Keep locales in sync

Install Extension · Documentation · Discord


What is this for?

This VS Code extension is a companion to Stringer CLI—the AI-powered i18n tool that automatically extracts and translates strings in your codebase.

This i18n Helper extension shows translation previews inline in your code and let's you easily add i18n keys. It also lets you trigger some Stringer CLI commands from within VS Code such as Align Translations.

⚠️Requires Stringer CLI — This extension only works with projects that have been processed by Stringer CLI.


Quick Start

  1. Install Stringer CLI and run the convert flow in your project
  2. Install this extension
  3. Start using the features below

Smart Locale Detection

The extension automatically finds the nearest locales folder relative to your active file. This works seamlessly with monorepos containing multiple locale directories—each file always displays translations from its correct locale folder.


Features

1. Inline Translation Previews

See translations directly in your code without switching files.

Preview modes:

ModeWhat it shows
No PreviewHide all inline translations (same as without the extension)
Key + LocaleShow full key and translation
Locale OnlyShow translation only

Mode 1: No Preview

No Preview mode

Mode 2: Key + Locale Preview

Key + Locale Preview mode

Mode 3: Locale Only Preview

Locale Only Preview mode

Change the mode:

  • Click the eye icon in the status bar
  • Or run: Stringer: Change Preview Mode

2. Add i18n Keys Manually

When Stringer CLI misses a string (it happens!), add it yourself in seconds.

How to use:

  1. Select any text in your code
  2. Right-click → "🌎 Add i18n key via Stringer"

Before:

<template>
<h1>Welcome to our app</h1>
</template>

After:

<template>
<h1>{{ t('components.header.0242') }}</h1>
</template>

Keys use the format keyPath.4-digit-code where keyPath is based on your file path (e.g., components/Header.vuecomponents.header).

The extension automatically:

  • Adds the string to your base locale file (en.json)
  • Replaces the text with the correct t() call
  • Injects const { t } = useI18n() if needed (Vue/Nuxt)
  • Detects context (template, attribute, script) and uses the right syntax

4. Missing Key Detection

Spot missing translations instantly with red indicators.

Missing key indicator

To fix it:

CAST 1: No values exist in the baseLanguage file after conversion: Manually right click the value and select "Add i18n key via Stringer". CASE 2: In the case that baseLanguage values exist: Run Stringer: Align Translations or stringer align in terminal.


5. Align Translations

Keep all your locale files in sync with one click.

How to use:

  1. Click "Stringer" in the status bar
  2. Select "Align Translations"

This runs stringer align which copies new keys from your base language to all other locales.


6. Revert to Original Text

Changed your mind? Revert an i18n key back to the original text. NOTE: This feature only works to revert basic string conversions, and is not yet capable of reverting complex i18n-t tag, or complex pluralization conversions.

How to use:

  1. Place your cursor on a t('...') call
  2. Right-click → "↩️ Revert to original text"

Before:

<h1>{{ t('components.header.0242') }}</h1>

After:

<h1>Welcome to our app</h1>

7. Ignore Lines or Files

Tell Stringer CLI to skip specific code.

Right-click menu options:

  • "🚫 Ignore this line" — Adds // @stringer-ignore-next-line above the current line
  • "🚫 Ignore this file" — Adds // @stringer-ignore at the top of the file
  • "🚫 Ignore from here" — Adds // @stringer-ignore-from-here at the cursor position

Status Bar

The extension adds helpful buttons to your status bar:

ButtonWhat it does
StringerOpens the main menu (align, docs, billing)
👁 PreviewChange preview mode
🌐 LangChange preview language

Open the Stringer menu (bottom right corner in VS Code / Cursor):

Stringer menu location

Stringer menu options:

Stringer menu options


Troubleshooting

"Stringer CLI config not found"

Run any Stringer CLI command first:

stringer

This creates the config file (~/.stringer-cli.json) the extension needs.

Previews not showing

  1. From the Stringer i18n helper menu, click the Select locales folder button and select the folder that contains your locale *.json files.
  2. Run Stringer: Reload Locales from the command palette
  3. Make sure enableInlinePreview is true in settings

Links


Built to work hand-in-hand with Stringer CLI for a smooth i18n workflow. Happy localizing! 🌍

About

Stringer CLI helper extension for VSCode

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Stringer

Stringer i18n Helper

The VS Code companion for Stringer CLI

Add i18n keys manually • Preview translations inline • Keep locales in sync

Install Extension · Documentation · Discord


What is this for?

This VS Code extension is a companion to Stringer CLI—the AI-powered i18n tool that automatically extracts and translates strings in your codebase.

This i18n Helper extension shows translation previews inline in your code and let's you easily add i18n keys. It also lets you trigger some Stringer CLI commands from within VS Code such as Align Translations.

⚠️Requires Stringer CLI — This extension only works with projects that have been processed by Stringer CLI.


Quick Start

  1. Install Stringer CLI and run the convert flow in your project
  2. Install this extension
  3. Start using the features below

Smart Locale Detection

The extension automatically finds the nearest locales folder relative to your active file. This works seamlessly with monorepos containing multiple locale directories—each file always displays translations from its correct locale folder.


Features

1. Inline Translation Previews

See translations directly in your code without switching files.

Preview modes:

ModeWhat it shows
No PreviewHide all inline translations (same as without the extension)
Key + LocaleShow full key and translation
Locale OnlyShow translation only

Mode 1: No Preview

No Preview mode

Mode 2: Key + Locale Preview

Key + Locale Preview mode

Mode 3: Locale Only Preview

Locale Only Preview mode

Change the mode:

  • Click the eye icon in the status bar
  • Or run: Stringer: Change Preview Mode

2. Add i18n Keys Manually

When Stringer CLI misses a string (it happens!), add it yourself in seconds.

How to use:

  1. Select any text in your code
  2. Right-click → "🌎 Add i18n key via Stringer"

Before:

<template>
<h1>Welcome to our app</h1>
</template>

After:

<template>
<h1>{{ t('components.header.0242') }}</h1>
</template>

Keys use the format keyPath.4-digit-code where keyPath is based on your file path (e.g., components/Header.vuecomponents.header).

The extension automatically:

  • Adds the string to your base locale file (en.json)
  • Replaces the text with the correct t() call
  • Injects const { t } = useI18n() if needed (Vue/Nuxt)
  • Detects context (template, attribute, script) and uses the right syntax

4. Missing Key Detection

Spot missing translations instantly with red indicators.

Missing key indicator

To fix it:

CAST 1: No values exist in the baseLanguage file after conversion: Manually right click the value and select "Add i18n key via Stringer". CASE 2: In the case that baseLanguage values exist: Run Stringer: Align Translations or stringer align in terminal.


5. Align Translations

Keep all your locale files in sync with one click.

How to use:

  1. Click "Stringer" in the status bar
  2. Select "Align Translations"

This runs stringer align which copies new keys from your base language to all other locales.


6. Revert to Original Text

Changed your mind? Revert an i18n key back to the original text. NOTE: This feature only works to revert basic string conversions, and is not yet capable of reverting complex i18n-t tag, or complex pluralization conversions.

How to use:

  1. Place your cursor on a t('...') call
  2. Right-click → "↩️ Revert to original text"

Before:

<h1>{{ t('components.header.0242') }}</h1>

After:

<h1>Welcome to our app</h1>

7. Ignore Lines or Files

Tell Stringer CLI to skip specific code.

Right-click menu options:

  • "🚫 Ignore this line" — Adds // @stringer-ignore-next-line above the current line
  • "🚫 Ignore this file" — Adds // @stringer-ignore at the top of the file
  • "🚫 Ignore from here" — Adds // @stringer-ignore-from-here at the cursor position

Status Bar

The extension adds helpful buttons to your status bar:

ButtonWhat it does
StringerOpens the main menu (align, docs, billing)
👁 PreviewChange preview mode
🌐 LangChange preview language

Open the Stringer menu (bottom right corner in VS Code / Cursor):

Stringer menu location

Stringer menu options:

Stringer menu options


Troubleshooting

"Stringer CLI config not found"

Run any Stringer CLI command first:

stringer

This creates the config file (~/.stringer-cli.json) the extension needs.

Previews not showing

  1. From the Stringer i18n helper menu, click the Select locales folder button and select the folder that contains your locale *.json files.
  2. Run Stringer: Reload Locales from the command palette
  3. Make sure enableInlinePreview is true in settings

Links


Built to work hand-in-hand with Stringer CLI for a smooth i18n workflow. Happy localizing! 🌍

About

Stringer CLI helper extension for VSCode

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Stringer

Stringer i18n Helper

The VS Code companion for Stringer CLI

Add i18n keys manually • Preview translations inline • Keep locales in sync

Install Extension · Documentation · Discord


What is this for?

This VS Code extension is a companion to Stringer CLI—the AI-powered i18n tool that automatically extracts and translates strings in your codebase.

This i18n Helper extension shows translation previews inline in your code and let's you easily add i18n keys. It also lets you trigger some Stringer CLI commands from within VS Code such as Align Translations.

⚠️Requires Stringer CLI — This extension only works with projects that have been processed by Stringer CLI.


Quick Start

  1. Install Stringer CLI and run the convert flow in your project
  2. Install this extension
  3. Start using the features below

Smart Locale Detection

The extension automatically finds the nearest locales folder relative to your active file. This works seamlessly with monorepos containing multiple locale directories—each file always displays translations from its correct locale folder.


Features

1. Inline Translation Previews

See translations directly in your code without switching files.

Preview modes:

ModeWhat it shows
No PreviewHide all inline translations (same as without the extension)
Key + LocaleShow full key and translation
Locale OnlyShow translation only

Mode 1: No Preview

No Preview mode

Mode 2: Key + Locale Preview

Key + Locale Preview mode

Mode 3: Locale Only Preview

Locale Only Preview mode

Change the mode:

  • Click the eye icon in the status bar
  • Or run: Stringer: Change Preview Mode

2. Add i18n Keys Manually

When Stringer CLI misses a string (it happens!), add it yourself in seconds.

How to use:

  1. Select any text in your code
  2. Right-click → "🌎 Add i18n key via Stringer"

Before:

<template>
<h1>Welcome to our app</h1>
</template>

After:

<template>
<h1>{{ t('components.header.0242') }}</h1>
</template>

Keys use the format keyPath.4-digit-code where keyPath is based on your file path (e.g., components/Header.vuecomponents.header).

The extension automatically:

  • Adds the string to your base locale file (en.json)
  • Replaces the text with the correct t() call
  • Injects const { t } = useI18n() if needed (Vue/Nuxt)
  • Detects context (template, attribute, script) and uses the right syntax

4. Missing Key Detection

Spot missing translations instantly with red indicators.

Missing key indicator

To fix it:

CAST 1: No values exist in the baseLanguage file after conversion: Manually right click the value and select "Add i18n key via Stringer". CASE 2: In the case that baseLanguage values exist: Run Stringer: Align Translations or stringer align in terminal.


5. Align Translations

Keep all your locale files in sync with one click.

How to use:

  1. Click "Stringer" in the status bar
  2. Select "Align Translations"

This runs stringer align which copies new keys from your base language to all other locales.


6. Revert to Original Text

Changed your mind? Revert an i18n key back to the original text. NOTE: This feature only works to revert basic string conversions, and is not yet capable of reverting complex i18n-t tag, or complex pluralization conversions.

How to use:

  1. Place your cursor on a t('...') call
  2. Right-click → "↩️ Revert to original text"

Before:

<h1>{{ t('components.header.0242') }}</h1>

After:

<h1>Welcome to our app</h1>

7. Ignore Lines or Files

Tell Stringer CLI to skip specific code.

Right-click menu options:

  • "🚫 Ignore this line" — Adds // @stringer-ignore-next-line above the current line
  • "🚫 Ignore this file" — Adds // @stringer-ignore at the top of the file
  • "🚫 Ignore from here" — Adds // @stringer-ignore-from-here at the cursor position

Status Bar

The extension adds helpful buttons to your status bar:

ButtonWhat it does
StringerOpens the main menu (align, docs, billing)
👁 PreviewChange preview mode
🌐 LangChange preview language

Open the Stringer menu (bottom right corner in VS Code / Cursor):

Stringer menu location

Stringer menu options:

Stringer menu options


Troubleshooting

"Stringer CLI config not found"

Run any Stringer CLI command first:

stringer

This creates the config file (~/.stringer-cli.json) the extension needs.

Previews not showing

  1. From the Stringer i18n helper menu, click the Select locales folder button and select the folder that contains your locale *.json files.
  2. Run Stringer: Reload Locales from the command palette
  3. Make sure enableInlinePreview is true in settings

Links


Built to work hand-in-hand with Stringer CLI for a smooth i18n workflow. Happy localizing! 🌍

About

Stringer CLI helper extension for VSCode

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Stringer

Stringer i18n Helper

The VS Code companion for Stringer CLI

Add i18n keys manually • Preview translations inline • Keep locales in sync

Install Extension · Documentation · Discord


What is this for?

This VS Code extension is a companion to Stringer CLI—the AI-powered i18n tool that automatically extracts and translates strings in your codebase.

This i18n Helper extension shows translation previews inline in your code and let's you easily add i18n keys. It also lets you trigger some Stringer CLI commands from within VS Code such as Align Translations.

⚠️Requires Stringer CLI — This extension only works with projects that have been processed by Stringer CLI.


Quick Start

  1. Install Stringer CLI and run the convert flow in your project
  2. Install this extension
  3. Start using the features below

Smart Locale Detection

The extension automatically finds the nearest locales folder relative to your active file. This works seamlessly with monorepos containing multiple locale directories—each file always displays translations from its correct locale folder.


Features

1. Inline Translation Previews

See translations directly in your code without switching files.

Preview modes:

ModeWhat it shows
No PreviewHide all inline translations (same as without the extension)
Key + LocaleShow full key and translation
Locale OnlyShow translation only

Mode 1: No Preview

No Preview mode

Mode 2: Key + Locale Preview

Key + Locale Preview mode

Mode 3: Locale Only Preview

Locale Only Preview mode

Change the mode:

  • Click the eye icon in the status bar
  • Or run: Stringer: Change Preview Mode

2. Add i18n Keys Manually

When Stringer CLI misses a string (it happens!), add it yourself in seconds.

How to use:

  1. Select any text in your code
  2. Right-click → "🌎 Add i18n key via Stringer"

Before:

<template>
<h1>Welcome to our app</h1>
</template>

After:

<template>
<h1>{{ t('components.header.0242') }}</h1>
</template>

Keys use the format keyPath.4-digit-code where keyPath is based on your file path (e.g., components/Header.vuecomponents.header).

The extension automatically:

  • Adds the string to your base locale file (en.json)
  • Replaces the text with the correct t() call
  • Injects const { t } = useI18n() if needed (Vue/Nuxt)
  • Detects context (template, attribute, script) and uses the right syntax

4. Missing Key Detection

Spot missing translations instantly with red indicators.

Missing key indicator

To fix it:

CAST 1: No values exist in the baseLanguage file after conversion: Manually right click the value and select "Add i18n key via Stringer". CASE 2: In the case that baseLanguage values exist: Run Stringer: Align Translations or stringer align in terminal.


5. Align Translations

Keep all your locale files in sync with one click.

How to use:

  1. Click "Stringer" in the status bar
  2. Select "Align Translations"

This runs stringer align which copies new keys from your base language to all other locales.


6. Revert to Original Text

Changed your mind? Revert an i18n key back to the original text. NOTE: This feature only works to revert basic string conversions, and is not yet capable of reverting complex i18n-t tag, or complex pluralization conversions.

How to use:

  1. Place your cursor on a t('...') call
  2. Right-click → "↩️ Revert to original text"

Before:

<h1>{{ t('components.header.0242') }}</h1>

After:

<h1>Welcome to our app</h1>

7. Ignore Lines or Files

Tell Stringer CLI to skip specific code.

Right-click menu options:

  • "🚫 Ignore this line" — Adds // @stringer-ignore-next-line above the current line
  • "🚫 Ignore this file" — Adds // @stringer-ignore at the top of the file
  • "🚫 Ignore from here" — Adds // @stringer-ignore-from-here at the cursor position

Status Bar

The extension adds helpful buttons to your status bar:

ButtonWhat it does
StringerOpens the main menu (align, docs, billing)
👁 PreviewChange preview mode
🌐 LangChange preview language

Open the Stringer menu (bottom right corner in VS Code / Cursor):

Stringer menu location

Stringer menu options:

Stringer menu options


Troubleshooting

"Stringer CLI config not found"

Run any Stringer CLI command first:

stringer

This creates the config file (~/.stringer-cli.json) the extension needs.

Previews not showing

  1. From the Stringer i18n helper menu, click the Select locales folder button and select the folder that contains your locale *.json files.
  2. Run Stringer: Reload Locales from the command palette
  3. Make sure enableInlinePreview is true in settings

Links


Built to work hand-in-hand with Stringer CLI for a smooth i18n workflow. Happy localizing! 🌍

About

Stringer CLI helper extension for VSCode

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Stringer

Stringer i18n Helper

The VS Code companion for Stringer CLI

Add i18n keys manually • Preview translations inline • Keep locales in sync

Install Extension · Documentation · Discord


What is this for?

This VS Code extension is a companion to Stringer CLI—the AI-powered i18n tool that automatically extracts and translates strings in your codebase.

This i18n Helper extension shows translation previews inline in your code and let's you easily add i18n keys. It also lets you trigger some Stringer CLI commands from within VS Code such as Align Translations.

⚠️Requires Stringer CLI — This extension only works with projects that have been processed by Stringer CLI.


Quick Start

  1. Install Stringer CLI and run the convert flow in your project
  2. Install this extension
  3. Start using the features below

Smart Locale Detection

The extension automatically finds the nearest locales folder relative to your active file. This works seamlessly with monorepos containing multiple locale directories—each file always displays translations from its correct locale folder.


Features

1. Inline Translation Previews

See translations directly in your code without switching files.

Preview modes:

ModeWhat it shows
No PreviewHide all inline translations (same as without the extension)
Key + LocaleShow full key and translation
Locale OnlyShow translation only

Mode 1: No Preview

No Preview mode

Mode 2: Key + Locale Preview

Key + Locale Preview mode

Mode 3: Locale Only Preview

Locale Only Preview mode

Change the mode:

  • Click the eye icon in the status bar
  • Or run: Stringer: Change Preview Mode

2. Add i18n Keys Manually

When Stringer CLI misses a string (it happens!), add it yourself in seconds.

How to use:

  1. Select any text in your code
  2. Right-click → "🌎 Add i18n key via Stringer"

Before:

<template>
<h1>Welcome to our app</h1>
</template>

After:

<template>
<h1>{{ t('components.header.0242') }}</h1>
</template>

Keys use the format keyPath.4-digit-code where keyPath is based on your file path (e.g., components/Header.vuecomponents.header).

The extension automatically:

  • Adds the string to your base locale file (en.json)
  • Replaces the text with the correct t() call
  • Injects const { t } = useI18n() if needed (Vue/Nuxt)
  • Detects context (template, attribute, script) and uses the right syntax

4. Missing Key Detection

Spot missing translations instantly with red indicators.

Missing key indicator

To fix it:

CAST 1: No values exist in the baseLanguage file after conversion: Manually right click the value and select "Add i18n key via Stringer". CASE 2: In the case that baseLanguage values exist: Run Stringer: Align Translations or stringer align in terminal.


5. Align Translations

Keep all your locale files in sync with one click.

How to use:

  1. Click "Stringer" in the status bar
  2. Select "Align Translations"

This runs stringer align which copies new keys from your base language to all other locales.


6. Revert to Original Text

Changed your mind? Revert an i18n key back to the original text. NOTE: This feature only works to revert basic string conversions, and is not yet capable of reverting complex i18n-t tag, or complex pluralization conversions.

How to use:

  1. Place your cursor on a t('...') call
  2. Right-click → "↩️ Revert to original text"

Before:

<h1>{{ t('components.header.0242') }}</h1>

After:

<h1>Welcome to our app</h1>

7. Ignore Lines or Files

Tell Stringer CLI to skip specific code.

Right-click menu options:

  • "🚫 Ignore this line" — Adds // @stringer-ignore-next-line above the current line
  • "🚫 Ignore this file" — Adds // @stringer-ignore at the top of the file
  • "🚫 Ignore from here" — Adds // @stringer-ignore-from-here at the cursor position

Status Bar

The extension adds helpful buttons to your status bar:

ButtonWhat it does
StringerOpens the main menu (align, docs, billing)
👁 PreviewChange preview mode
🌐 LangChange preview language

Open the Stringer menu (bottom right corner in VS Code / Cursor):

Stringer menu location

Stringer menu options:

Stringer menu options


Troubleshooting

"Stringer CLI config not found"

Run any Stringer CLI command first:

stringer

This creates the config file (~/.stringer-cli.json) the extension needs.

Previews not showing

  1. From the Stringer i18n helper menu, click the Select locales folder button and select the folder that contains your locale *.json files.
  2. Run Stringer: Reload Locales from the command palette
  3. Make sure enableInlinePreview is true in settings

Links


Built to work hand-in-hand with Stringer CLI for a smooth i18n workflow. Happy localizing! 🌍

About

Stringer CLI helper extension for VSCode

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Stringer

Stringer i18n Helper

The VS Code companion for Stringer CLI

Add i18n keys manually • Preview translations inline • Keep locales in sync

Install Extension · Documentation · Discord


What is this for?

This VS Code extension is a companion to Stringer CLI—the AI-powered i18n tool that automatically extracts and translates strings in your codebase.

This i18n Helper extension shows translation previews inline in your code and let's you easily add i18n keys. It also lets you trigger some Stringer CLI commands from within VS Code such as Align Translations.

⚠️Requires Stringer CLI — This extension only works with projects that have been processed by Stringer CLI.


Quick Start

  1. Install Stringer CLI and run the convert flow in your project
  2. Install this extension
  3. Start using the features below

Smart Locale Detection

The extension automatically finds the nearest locales folder relative to your active file. This works seamlessly with monorepos containing multiple locale directories—each file always displays translations from its correct locale folder.


Features

1. Inline Translation Previews

See translations directly in your code without switching files.

Preview modes:

ModeWhat it shows
No PreviewHide all inline translations (same as without the extension)
Key + LocaleShow full key and translation
Locale OnlyShow translation only

Mode 1: No Preview

No Preview mode

Mode 2: Key + Locale Preview

Key + Locale Preview mode

Mode 3: Locale Only Preview

Locale Only Preview mode

Change the mode:

  • Click the eye icon in the status bar
  • Or run: Stringer: Change Preview Mode

2. Add i18n Keys Manually

When Stringer CLI misses a string (it happens!), add it yourself in seconds.

How to use:

  1. Select any text in your code
  2. Right-click → "🌎 Add i18n key via Stringer"

Before:

<template>
<h1>Welcome to our app</h1>
</template>

After:

<template>
<h1>{{ t('components.header.0242') }}</h1>
</template>

Keys use the format keyPath.4-digit-code where keyPath is based on your file path (e.g., components/Header.vuecomponents.header).

The extension automatically:

  • Adds the string to your base locale file (en.json)
  • Replaces the text with the correct t() call
  • Injects const { t } = useI18n() if needed (Vue/Nuxt)
  • Detects context (template, attribute, script) and uses the right syntax

4. Missing Key Detection

Spot missing translations instantly with red indicators.

Missing key indicator

To fix it:

CAST 1: No values exist in the baseLanguage file after conversion: Manually right click the value and select "Add i18n key via Stringer". CASE 2: In the case that baseLanguage values exist: Run Stringer: Align Translations or stringer align in terminal.


5. Align Translations

Keep all your locale files in sync with one click.

How to use:

  1. Click "Stringer" in the status bar
  2. Select "Align Translations"

This runs stringer align which copies new keys from your base language to all other locales.


6. Revert to Original Text

Changed your mind? Revert an i18n key back to the original text. NOTE: This feature only works to revert basic string conversions, and is not yet capable of reverting complex i18n-t tag, or complex pluralization conversions.

How to use:

  1. Place your cursor on a t('...') call
  2. Right-click → "↩️ Revert to original text"

Before:

<h1>{{ t('components.header.0242') }}</h1>

After:

<h1>Welcome to our app</h1>

7. Ignore Lines or Files

Tell Stringer CLI to skip specific code.

Right-click menu options:

  • "🚫 Ignore this line" — Adds // @stringer-ignore-next-line above the current line
  • "🚫 Ignore this file" — Adds // @stringer-ignore at the top of the file
  • "🚫 Ignore from here" — Adds // @stringer-ignore-from-here at the cursor position

Status Bar

The extension adds helpful buttons to your status bar:

ButtonWhat it does
StringerOpens the main menu (align, docs, billing)
👁 PreviewChange preview mode
🌐 LangChange preview language

Open the Stringer menu (bottom right corner in VS Code / Cursor):

Stringer menu location

Stringer menu options:

Stringer menu options


Troubleshooting

"Stringer CLI config not found"

Run any Stringer CLI command first:

stringer

This creates the config file (~/.stringer-cli.json) the extension needs.

Previews not showing

  1. From the Stringer i18n helper menu, click the Select locales folder button and select the folder that contains your locale *.json files.
  2. Run Stringer: Reload Locales from the command palette
  3. Make sure enableInlinePreview is true in settings

Links


Built to work hand-in-hand with Stringer CLI for a smooth i18n workflow. Happy localizing! 🌍

About

Stringer CLI helper extension for VSCode

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Stringer

Stringer i18n Helper

The VS Code companion for Stringer CLI

Add i18n keys manually • Preview translations inline • Keep locales in sync

Install Extension · Documentation · Discord


What is this for?

This VS Code extension is a companion to Stringer CLI—the AI-powered i18n tool that automatically extracts and translates strings in your codebase.

This i18n Helper extension shows translation previews inline in your code and let's you easily add i18n keys. It also lets you trigger some Stringer CLI commands from within VS Code such as Align Translations.

⚠️Requires Stringer CLI — This extension only works with projects that have been processed by Stringer CLI.


Quick Start

  1. Install Stringer CLI and run the convert flow in your project
  2. Install this extension
  3. Start using the features below

Smart Locale Detection

The extension automatically finds the nearest locales folder relative to your active file. This works seamlessly with monorepos containing multiple locale directories—each file always displays translations from its correct locale folder.


Features

1. Inline Translation Previews

See translations directly in your code without switching files.

Preview modes:

ModeWhat it shows
No PreviewHide all inline translations (same as without the extension)
Key + LocaleShow full key and translation
Locale OnlyShow translation only

Mode 1: No Preview

No Preview mode

Mode 2: Key + Locale Preview

Key + Locale Preview mode

Mode 3: Locale Only Preview

Locale Only Preview mode

Change the mode:

  • Click the eye icon in the status bar
  • Or run: Stringer: Change Preview Mode

2. Add i18n Keys Manually

When Stringer CLI misses a string (it happens!), add it yourself in seconds.

How to use:

  1. Select any text in your code
  2. Right-click → "🌎 Add i18n key via Stringer"

Before:

<template>
<h1>Welcome to our app</h1>
</template>

After:

<template>
<h1>{{ t('components.header.0242') }}</h1>
</template>

Keys use the format keyPath.4-digit-code where keyPath is based on your file path (e.g., components/Header.vuecomponents.header).

The extension automatically:

  • Adds the string to your base locale file (en.json)
  • Replaces the text with the correct t() call
  • Injects const { t } = useI18n() if needed (Vue/Nuxt)
  • Detects context (template, attribute, script) and uses the right syntax

4. Missing Key Detection

Spot missing translations instantly with red indicators.

Missing key indicator

To fix it:

CAST 1: No values exist in the baseLanguage file after conversion: Manually right click the value and select "Add i18n key via Stringer". CASE 2: In the case that baseLanguage values exist: Run Stringer: Align Translations or stringer align in terminal.


5. Align Translations

Keep all your locale files in sync with one click.

How to use:

  1. Click "Stringer" in the status bar
  2. Select "Align Translations"

This runs stringer align which copies new keys from your base language to all other locales.


6. Revert to Original Text

Changed your mind? Revert an i18n key back to the original text. NOTE: This feature only works to revert basic string conversions, and is not yet capable of reverting complex i18n-t tag, or complex pluralization conversions.

How to use:

  1. Place your cursor on a t('...') call
  2. Right-click → "↩️ Revert to original text"

Before:

<h1>{{ t('components.header.0242') }}</h1>

After:

<h1>Welcome to our app</h1>

7. Ignore Lines or Files

Tell Stringer CLI to skip specific code.

Right-click menu options:

  • "🚫 Ignore this line" — Adds // @stringer-ignore-next-line above the current line
  • "🚫 Ignore this file" — Adds // @stringer-ignore at the top of the file
  • "🚫 Ignore from here" — Adds // @stringer-ignore-from-here at the cursor position

Status Bar

The extension adds helpful buttons to your status bar:

ButtonWhat it does
StringerOpens the main menu (align, docs, billing)
👁 PreviewChange preview mode
🌐 LangChange preview language

Open the Stringer menu (bottom right corner in VS Code / Cursor):

Stringer menu location

Stringer menu options:

Stringer menu options


Troubleshooting

"Stringer CLI config not found"

Run any Stringer CLI command first:

stringer

This creates the config file (~/.stringer-cli.json) the extension needs.

Previews not showing

  1. From the Stringer i18n helper menu, click the Select locales folder button and select the folder that contains your locale *.json files.
  2. Run Stringer: Reload Locales from the command palette
  3. Make sure enableInlinePreview is true in settings

Links


Built to work hand-in-hand with Stringer CLI for a smooth i18n workflow. Happy localizing! 🌍

About

Stringer CLI helper extension for VSCode

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

19 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Stringer

Stringer i18n Helper

The VS Code companion for Stringer CLI

Add i18n keys manually • Preview translations inline • Keep locales in sync

Install Extension · Documentation · Discord


What is this for?

This VS Code extension is a companion to Stringer CLI—the AI-powered i18n tool that automatically extracts and translates strings in your codebase.

This i18n Helper extension shows translation previews inline in your code and let's you easily add i18n keys. It also lets you trigger some Stringer CLI commands from within VS Code such as Align Translations.

⚠️Requires Stringer CLI — This extension only works with projects that have been processed by Stringer CLI.


Quick Start

  1. Install Stringer CLI and run the convert flow in your project
  2. Install this extension
  3. Start using the features below

Smart Locale Detection

The extension automatically finds the nearest locales folder relative to your active file. This works seamlessly with monorepos containing multiple locale directories—each file always displays translations from its correct locale folder.


Features

1. Inline Translation Previews

See translations directly in your code without switching files.

Preview modes:

ModeWhat it shows
No PreviewHide all inline translations (same as without the extension)
Key + LocaleShow full key and translation
Locale OnlyShow translation only

Mode 1: No Preview

No Preview mode

Mode 2: Key + Locale Preview

Key + Locale Preview mode

Mode 3: Locale Only Preview

Locale Only Preview mode

Change the mode:

  • Click the eye icon in the status bar
  • Or run: Stringer: Change Preview Mode

2. Add i18n Keys Manually

When Stringer CLI misses a string (it happens!), add it yourself in seconds.

How to use:

  1. Select any text in your code
  2. Right-click → "🌎 Add i18n key via Stringer"

Before:

<template>
<h1>Welcome to our app</h1>
</template>

After:

<template>
<h1>{{ t('components.header.0242') }}</h1>
</template>

Keys use the format keyPath.4-digit-code where keyPath is based on your file path (e.g., components/Header.vuecomponents.header).

The extension automatically:

  • Adds the string to your base locale file (en.json)
  • Replaces the text with the correct t() call
  • Injects const { t } = useI18n() if needed (Vue/Nuxt)
  • Detects context (template, attribute, script) and uses the right syntax

4. Missing Key Detection

Spot missing translations instantly with red indicators.

Missing key indicator

To fix it:

CAST 1: No values exist in the baseLanguage file after conversion: Manually right click the value and select "Add i18n key via Stringer". CASE 2: In the case that baseLanguage values exist: Run Stringer: Align Translations or stringer align in terminal.


5. Align Translations

Keep all your locale files in sync with one click.

How to use:

  1. Click "Stringer" in the status bar
  2. Select "Align Translations"

This runs stringer align which copies new keys from your base language to all other locales.


6. Revert to Original Text

Changed your mind? Revert an i18n key back to the original text. NOTE: This feature only works to revert basic string conversions, and is not yet capable of reverting complex i18n-t tag, or complex pluralization conversions.

How to use:

  1. Place your cursor on a t('...') call
  2. Right-click → "↩️ Revert to original text"

Before:

<h1>{{ t('components.header.0242') }}</h1>

After:

<h1>Welcome to our app</h1>

7. Ignore Lines or Files

Tell Stringer CLI to skip specific code.

Right-click menu options:

  • "🚫 Ignore this line" — Adds // @stringer-ignore-next-line above the current line
  • "🚫 Ignore this file" — Adds // @stringer-ignore at the top of the file
  • "🚫 Ignore from here" — Adds // @stringer-ignore-from-here at the cursor position

Status Bar

The extension adds helpful buttons to your status bar:

ButtonWhat it does
StringerOpens the main menu (align, docs, billing)
👁 PreviewChange preview mode
🌐 LangChange preview language

Open the Stringer menu (bottom right corner in VS Code / Cursor):

Stringer menu location

Stringer menu options:

Stringer menu options


Troubleshooting

"Stringer CLI config not found"

Run any Stringer CLI command first:

stringer

This creates the config file (~/.stringer-cli.json) the extension needs.

Previews not showing

  1. From the Stringer i18n helper menu, click the Select locales folder button and select the folder that contains your locale *.json files.
  2. Run Stringer: Reload Locales from the command palette
  3. Make sure enableInlinePreview is true in settings

Links


Built to work hand-in-hand with Stringer CLI for a smooth i18n workflow. Happy localizing! 🌍

About

Stringer CLI helper extension for VSCode

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages