Agent skill

Orchardcore Localization

by OrchardCMS in OrchardCMS/OrchardCore

Localizes OrchardCore apps — UI strings (IStringLocalizer/IViewLocalizer S, T, H), PO files and pluralization, content translation (LocalizationPart, culture picker), and supported-culture…

BSD-3-ClauseAuto-check passedWriting & Content

Install Orchardcore Localization

skills CLI
$ npx skills add OrchardCMS/OrchardCore --skill orchardcore-localization -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install OrchardCMS/OrchardCore orchardcore-localization --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/OrchardCMS/OrchardCore.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/orchardcore-localization .claude/skills/orchardcore-localization && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
orchardcore-localization
GitHub stars
8.2k
Token cost
~1.7k tokens
SKILL.md length
508 words
Files
2 (incl. references)
Skills in repo
16
Repo updated
First seen
Licence
BSD-3-Clause

At a glance

Localizes OrchardCore apps — UI strings (IStringLocalizer/IViewLocalizer S, T, H), PO files and pluralization, content translation (LocalizationPart, culture picker), and supported-culture…

  • Works in 6 steps: Inject the right localizer → Pluralize when counting → Provide PO translations → …
  • The user needs to translate strings
  • SKILL.md covers Decide which layer, Workflow A: localize UI strings, Workflow B: localize content and Workflow C: configure cultures, plus 3 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Orchardcore Localization is an agent skill from OrchardCMS/OrchardCore. Localizes OrchardCore apps — UI strings (IStringLocalizer/IViewLocalizer S, T, H), PO files and pluralization, content translation (LocalizationPart, culture picker), and supported-culture configuration. Use when the user needs to translate strings, add a culture, set up PO files, or make content items multilingual.

Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/localization.md`).

It sits in Writing & Content, covering Translation and Internationalization. The repository describes itself as: Orchard Core is an open-source modular and multi-tenant application framework built with ASP.NET Core, and a content management system (CMS) built on top of that framework. The licence is BSD-3-Clause.

When your agent uses it

  • The user needs to translate strings
  • Set up PO files
  • Make content items multilingual

Example prompts

  • “Use the orchardcore-localization skill to localiz OrchardCore apps — UI strings (IStringLocalizer/IViewLocalizer S, T, H), PO files and…”
  • “/orchardcore-localization”

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Inject the right localizer
  2. Pluralize when counting
  3. Provide PO translations
  4. Enable the feature, attach the part
  5. Translate
  6. Surface translations / culture picker

What it can do on your machine

Read from SKILL.md and the folder at commit d6bb7b4. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are csharp, po and json).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Orchardcore Localization loads about 1.7k tokens when it runs, and up to ~3k if it reads all its reference files. Until then it costs about 86 tokens; SKILL.md has 508 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~86
When it runs · the whole SKILL.md, loaded when a task matches
~1.7k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from OrchardCMS/OrchardCore at commit d6bb7b4, republished under its BSD-3-Clause licence (© OrchardCMS). 508 words, ~1,696 tokens.

Download SKILL.mdSave it as .claude/skills/orchardcore-localization/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
orchardcore-localization
description
Localizes OrchardCore apps — UI strings (IStringLocalizer/IViewLocalizer S, T, H), PO files and pluralization, content translation (LocalizationPart, culture picker), and supported-culture configuration. Use when the user needs to translate strings, add a culture, set up PO files, or make content items multilingual.

OrchardCore Localization

This skill guides you through OrchardCore localization following project conventions.

Three layers, often confused:

  • UI/code localization — translate hard-coded strings in C#/Razor/Liquid via IStringLocalizer (S), IViewLocalizer (T), IHtmlLocalizer (H). Translations live in PO files.
  • Content localization — translate content items across cultures via LocalizationPart and the OrchardCore.ContentLocalization module.
  • Culture configuration — which cultures the site supports and how the request culture is chosen.

Decide which layer

GoalLayer
Translate a label/message in code or a viewUI localization (S/T/H) + PO file
Pluralize ("1 item" / "{0} items")S.Plural(...) + PO msgid_plural
Translate a blog post into FrenchContent localization (LocalizationPart)
Add a supported language / set defaultLocalization settings (LocalizationSettings)
Translate data-driven values (e.g. taxonomy terms)Data Localization (DataLocalization module)

Workflow A: localize UI strings

Step 1: Inject the right localizer
LocalizerConventionWhere
IStringLocalizer<T>field Sdrivers, services, controllers
IViewLocalizerproperty TRazor views (already on RazorPage)
IHtmlLocalizer<T>field Hwhen the translation contains HTML
csharp
public sealed class AliasPartDisplayDriver : ContentPartDisplayDriver<AliasPart>
{
    internal readonly IStringLocalizer S;

    public AliasPartDisplayDriver(IStringLocalizer<AliasPartDisplayDriver> localizer)
        => S = localizer;
}

In Razor: @T["Welcome to Orchard Core"]. In a class: S["A value is required for {0}.", name].

Step 2: Pluralize when counting
csharp
S.Plural(count, "{0} book", "{0} books");
// IHtmlLocalizer: H.Plural(count, "{0} book", "{0} books")
Step 3: Provide PO translations

PO files are discovered (in order) from each module's Localization/, a global /Localization, the tenant's App_Data/Sites/{tenant}/Localization, and culture folders. A PO entry:

po
msgctxt "OrchardCore.Admin.Views.AdminDashboard"
msgid "Welcome to Orchard Core"
msgstr "Bienvenue sur Orchard Core"

msgctxt = {Namespace}.{Class} (services) or {Namespace}.{ViewPath} (views). Plurals:

po
msgctxt "OrchardCore.AdminMenu.Views.Menu.List"
msgid "1 item"
msgid_plural "{0} items"
msgstr[0] "{0} élément"
msgstr[1] "{0} éléments"

See references/localization.md for the full PO discovery order and headers.

Workflow B: localize content

Step 1: Enable the feature, attach the part

Enable OrchardCore.ContentLocalization (Content Localization). Attach LocalizationPart to the content type (admin or recipe). It carries:

csharp
public class LocalizationPart : ContentPart, ILocalizable
{
    public string LocalizationSet { get; set; } // links all translations
    public string Culture { get; set; }         // this version's culture
}

On create, the part handler generates a unique LocalizationSet and sets the default culture automatically.

Step 2: Translate

From the editor's Localization, "Translate" creates a sibling content item sharing the same LocalizationSet with a different Culture. Programmatically:

csharp
var translated = await _contentLocalizationManager.LocalizeAsync(contentItem, "fr-FR");
Step 3: Surface translations / culture picker

IContentLocalizationManager fetches across a set:

csharp
await _contentLocalizationManager.GetContentItemAsync(localizationSet, "fr");
await _contentLocalizationManager.GetItemsForSetAsync(localizationSet);

Liquid: {{ Model.ContentItem.Content.LocalizationPart.LocalizationSet | localization_set: "en" }}. The Content Culture Picker feature adds a front-end language switcher and a ContentRequestCultureProvider that derives the culture from the localized route.

Show full SKILL.md (191 more words)Show less

Workflow C: configure cultures

Recipe settings step:

json
{
  "name": "settings",
  "LocalizationSettings": {
    "DefaultCulture": "en-US",
    "SupportedCultures": [ "en-US", "fr-FR", "es-ES" ],
    "FallBackToParentCulture": true
  }
}

The Localization module reads these at startup and calls app.UseRequestLocalization(...) with the configured default + supported cultures.

Quick Reference

Localizers
SymbolTypeOutput
SIStringLocalizer<T>plain string
TIViewLocalizerencoded view string
HIHtmlLocalizer<T>HTML-safe string
Content localization APIs
MemberPurpose
IContentLocalizationManager.LocalizeAsync(item, culture)create a translation
.GetContentItemAsync(set, culture)one translation
.GetItemsForSetAsync(set)all translations
.GetItemsForSetsAsync(sets, culture)batch
ILocalizationService.GetDefaultCultureAsync() / GetSupportedCulturesAsync()culture config
Request culture providers
ProviderPicks culture from
ContentRequestCultureProviderthe localized content route (added first)
AdminCookieCultureProvideradmin_culture_* cookie, admin paths only
cookie / querystring / Accept-LanguageASP.NET Core defaults
Liquid filters

localization_set: "fr" — translated item; switch_culture_url — culture-switch URL.

Gotchas

  • msgctxt must exactly match the namespace+class (or namespace+view path). Wrong context → string stays untranslated.
  • IStringLocalizer<T> context comes from T's type — inject the localizer typed to the class that owns the strings.
  • LocalizationSet links translations; never share one set across unrelated items, and don't overwrite it.
  • Add a culture to SupportedCultures before content can be translated into it.
  • DataAnnotations need AddDataAnnotationsPortableObjectLocalization() (the Localization module registers it).

References

  • references/localization.md — PO discovery order, contexts, plural forms, content localization internals, startup wiring
  • src/docs/reference/modules/Localize/README.md (repo)
  • src/docs/reference/modules/ContentLocalization/README.md (repo)
  • src/docs/reference/modules/DataLocalization/README.md (repo)
  • AGENTS.md (repo root) — build commands

© OrchardCMS, BSD-3-Clause. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in .agents/skills/orchardcore-localization of OrchardCMS/OrchardCore.

  • SKILL.md
  • references/localization.md

Open the folder on GitHubat commit d6bb7b4

Compare with similar skills

Orchardcore Localization next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Orchardcore Localization compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Orchardcore Localization this skillOrchardCMS/OrchardCore8.2k—~1.7kAutomated safety check: PassBSD-3-Clause
Translation Diff ExportDevolutions/UniGetUI26k—~1.1kAutomated safety check: PassMIT
Translation Diff TranslateDevolutions/UniGetUI26k—~934Automated safety check: PassMIT
Plane UI Translationmakeplane/plane61k—~16kAutomated safety check: PassAGPL-3.0
Translatetagspaces/tagspaces5.3k—~2.2kAutomated safety check: PassAGPL-3.0
Translation Source SyncDevolutions/UniGetUI26k—~1.2kAutomated safety check: PassMIT

Similar skills

  • Translation Diff Export

    Devolutions/UniGetUI

    Compares UniGetUI JSON locale files against English, identifies untranslated or source-changed keys, and generates patch, reference, and handoff files for a target language.

    26k GitHub stars~1.1k tokensUpdated today
    Writing & ContentAuto-check passed
  • Translation Diff Translate

    Devolutions/UniGetUI

    Translates a sparse UniGetUI JSON language patch, writes completed entries into the working copy, preserves placeholders and terminology, and prepares the patch for merge-back.

    26k GitHub stars~934 tokensUpdated today
    Writing & ContentAuto-check passed
  • Plane UI Translation

    makeplane/plane

    Sets the rules for translating and updating Plane's UI strings across locales: do-not-translate terms, plural forms, placeholders and AI translation review.

    61k GitHub stars~16k tokensUpdated today
    Writing & ContentAuto-check passed
  • Translate

    tagspaces/tagspaces

    Translate new or untranslated i18n strings from the English locale files (core.json + peri.json) into all other locales, maintaining consistency with each language's existing translations.

    5.3k GitHub stars~2.2k tokensUpdated 2 days ago
    Writing & ContentAuto-check passed
  • Translation Source Sync

    Devolutions/UniGetUI

    Synchronizes the UniGetUI English language file with source-code usage, identifies missing translation keys, removes unused entries, reports localization drift, and can reorder locale files to match…

    26k GitHub stars~1.2k tokensUpdated today
    Writing & ContentAuto-check passed
  • Translate or audit the values in a Video.js locale pack. An agent skill from videojs/video.js.

    40k GitHub stars~723 tokensUpdated today
    Writing & ContentAuto-check passed

More from OrchardCMS/OrchardCore

All 16 skills in this repo
  • Orchardcore Admin Edit Views

    OrchardCMS/OrchardCore

    Creates and updates OrchardCore admin edit views using the ocat- CSS class conventions.

    8.2k GitHub stars~3.7k tokensUpdated today
    Auto-check passed
  • Orchardcore Asset Manager

    OrchardCMS/OrchardCore

    Builds, watches, and manages frontend assets in OrchardCore.

    8.2k GitHub stars~1.5k tokensUpdated today
    Auto-check passed
  • Orchardcore Data Migration

    OrchardCMS/OrchardCore

    Creates and updates OrchardCore data migrations (DataMigration classes with CreateAsync/UpdateFromX).

    8.2k GitHub stars~1.7k tokensUpdated today
    Auto-check passed
  • Orchardcore Display Management

    OrchardCMS/OrchardCore

    Controls how OrchardCore renders content — placement.json rules, display drivers, shapes, zones, alternates, and editor groupings (tabs/cards/columns).

    8.2k GitHub stars~1.8k tokensUpdated today
    Auto-check passed
  • Orchardcore Docs Writer

    OrchardCMS/OrchardCore

    Authors OrchardCore documentation — MkDocs Material pages, module README docs, nav entries, admonitions, tabbed content, and redirects.

    8.2k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Orchardcore Module Creator

    OrchardCMS/OrchardCore

    Creates new OrchardCore modules with proper structure, manifest, startup, and patterns.

    8.2k GitHub stars~1.1k tokensUpdated today
    Auto-check passed

Questions about Orchardcore Localization

What does Orchardcore Localization do?

Localizes OrchardCore apps — UI strings (IStringLocalizer/IViewLocalizer S, T, H), PO files and pluralization, content translation (LocalizationPart, culture picker), and supported-culture…. Orchardcore Localization is an agent skill from OrchardCMS/OrchardCore. Localizes OrchardCore apps — UI strings (IStringLocalizer/IViewLocalizer S, T, H), PO files and pluralization, content translation (LocalizationPart, culture picker), and supported-culture configuration.

When should I use Orchardcore Localization?

Orchardcore Localization fits situations like: the user needs to translate strings; set up PO files; make content items multilingual.

How do I install Orchardcore Localization in Claude Code?

Run `npx skills add OrchardCMS/OrchardCore --skill orchardcore-localization -a claude-code`. Or copy the skill folder (.agents/skills/orchardcore-localization in OrchardCMS/OrchardCore) into .claude/skills/orchardcore-localization in your project. Claude Code loads it when a task matches its description.

How do I install Orchardcore Localization in Codex?

Run `npx skills add OrchardCMS/OrchardCore --skill orchardcore-localization -a codex`. Or copy the skill folder (.agents/skills/orchardcore-localization in OrchardCMS/OrchardCore) into .agents/skills/orchardcore-localization in your project. Codex loads it when a task matches its description.

Can I use Orchardcore Localization in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add OrchardCMS/OrchardCore --skill orchardcore-localization -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/orchardcore-localization, .gemini/skills/orchardcore-localization, .github/skills/orchardcore-localization and .opencode/skills/orchardcore-localization in your project.

What does Orchardcore Localization need to run?

SKILL.md names no scripts, command-line tools or credentials: Orchardcore Localization is instructions for the agent only.

Does Orchardcore Localization access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Orchardcore Localization safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Orchardcore Localization use?

Orchardcore Localization is published under the BSD-3-Clause licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Orchardcore Localization use?

About 1.7k tokens (SKILL.md is roughly 6.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.3k tokens, read only when the agent opens those files.

What are the alternatives to Orchardcore Localization?

Skills that share tags, products or a category with Orchardcore Localization: Translation Diff Export (Devolutions/UniGetUI, 26k stars), Translation Diff Translate (Devolutions/UniGetUI, 26k stars), Plane UI Translation (makeplane/plane, 61k stars) and Translate (tagspaces/tagspaces, 5.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Orchardcore Localization?

OrchardCMS (a GitHub organization) maintains it in OrchardCMS/OrchardCore, which has 8,195 GitHub stars. The repository holds 16 skills in this directory. The repository was last updated on October 8, 2026.

Source: OrchardCMS/OrchardCore on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.