Skip to content

FAQ (EN)

How do I run string extraction?

  • Select one or more translatable assets in Unity.
  • Run Tools/Hyper PO Localization/Extract Strings.
  • You can also use the Project window context menu (right-click): Assets/Hyper PO Localization/Extract Strings.
  • Extraction is selection-based: only the currently selected assets are processed.

Where can I confirm extraction results?

  • Check Unity Console.
  • The extraction step writes a summary log with counts and manifest path.

Should I use POT workflow or Poedit "Update from Code"?

  • Both are supported.
  • POT workflow (Extract Strings -> Create/Update POT) is the canonical template-based flow.
  • Update from Code is valid for day-to-day updates when scanning generated Temp/*.php.

Can Poedit scan C# runtime calls directly?

Yes. Use *.cs and configure these keywords:

  • GetString:1
  • GetStringContext:1c,2
  • GetPlural:1,2
  • GetPluralContext:1c,2,3

Can I mix C# scan and generated PHP scan in the same Poedit project?

  • If keys are identical (msgctxt + msgid + msgid_plural), gettext merges them.
  • Still, prefer one source per Poedit project to reduce noisy references and near-duplicates from extraction differences.

Why are some runtime strings missing in Poedit?

  • Static parsing only detects literal arguments.
  • GetString("Quest Title") can be extracted.
  • GetString(dynamicKey) cannot be discovered statically.

For dynamic keys, add entries to a ManualTranslations asset:

  • Create/Hyper/Language/Manual Translations

How do I include context and plural forms?

  • Use contextual/plural runtime methods (GetStringContext, GetPlural, GetPluralContext) with literal keys when possible.
  • In asset extraction workflows, you can provide metadata with attributes such as TranslationContext and TranslationPlural.
  • Full attribute reference: Documentation/ExtractionAttributes.md.

Where are localization files stored?

  • Generated extraction files (for Poedit source parsing): Assets/HyperMegaPixel/POLocalization/Temp
  • Runtime language files: Assets/StreamingAssets/Languages

Known Limits

  • Extract Strings is selection-based. Only selected assets are processed in each run.
  • Static parsing cannot infer dynamic runtime keys (for example GetString(dynamicKey)).
  • Using mixed scan sources in one Poedit project (C# + generated PHP) can add noisy references, even when identical keys are merged.