Language lookup
The static Languages facade covers the common lookup paths.
<?php
use Alto\Language\Languages;
$php = Languages::get('php');
$rust = Languages::fromExtension('rs');
$python = Languages::fromAlias('py');
$make = Languages::fromFilename('/project/Makefile');Extensions accept an optional leading dot and are normalized to lowercase.
Aliases are case-insensitive. Exact filenames retain their registered case.
Every lookup returns null when no definition matches.
Resolve an unknown identifier
<?php
$language = Languages::resolve($identifier);resolve() tries, in order:
- Exact slug.
- Alias.
- Extension.
- Exact filename or filename extension.
Use a specific method whenever the identifier type is already known. It makes the fallback behavior explicit and avoids an accidental alias match.
Use an injectable registry
<?php
use Alto\Language\LanguageRegistry;
$registry = new LanguageRegistry();
$language = $registry->fromFilename('example.ts');LanguageRegistry exposes the same lookup, catalog, and relationship methods
without global state. Prefer it in services that use dependency injection.