fix(cjk): resolve hyphenation callback with cjk content in resume

This commit is contained in:
Amruth Pillai
2026-05-11 22:04:45 +02:00
parent 0a8fe05653
commit 62b0a1d533
27 changed files with 486 additions and 525 deletions
+4
View File
@@ -22,3 +22,7 @@ export function filterFieldValues<TKey extends string, TField extends KeyedField
const filteredFields = fields.filter((field) => Boolean(values[field.key]?.trim()));
return new Map(filteredFields.map((field) => [field.key, field] as const));
}
export function unique<T>(items: T[]) {
return items.filter((item, index) => items.indexOf(item) === index);
}
+2 -2
View File
@@ -12,8 +12,8 @@ describe("isLocale", () => {
expect(isLocale("en-US")).toBe(true);
});
it("returns true for any non-empty string (no validation of locale shape)", () => {
expect(isLocale("xyz")).toBe(true);
it("returns false for unsupported locale string", () => {
expect(isLocale("xyz")).toBe(false);
});
it("returns false for empty string", () => {
+66 -3
View File
@@ -1,8 +1,71 @@
// Minimal locale type — the full lingui wiring lives in apps/web (Phase 13).
export type Locale = string;
import z from "zod";
export const localeSchema = z.union([
z.literal("af-ZA"),
z.literal("am-ET"),
z.literal("ar-SA"),
z.literal("az-AZ"),
z.literal("bg-BG"),
z.literal("bn-BD"),
z.literal("ca-ES"),
z.literal("cs-CZ"),
z.literal("da-DK"),
z.literal("de-DE"),
z.literal("el-GR"),
z.literal("en-US"),
z.literal("en-GB"),
z.literal("es-ES"),
z.literal("fa-IR"),
z.literal("fi-FI"),
z.literal("fr-FR"),
z.literal("he-IL"),
z.literal("hi-IN"),
z.literal("hu-HU"),
z.literal("id-ID"),
z.literal("it-IT"),
z.literal("ja-JP"),
z.literal("km-KH"),
z.literal("kn-IN"),
z.literal("ko-KR"),
z.literal("lt-LT"),
z.literal("lv-LV"),
z.literal("ml-IN"),
z.literal("mr-IN"),
z.literal("ms-MY"),
z.literal("ne-NP"),
z.literal("nl-NL"),
z.literal("no-NO"),
z.literal("or-IN"),
z.literal("pl-PL"),
z.literal("pt-BR"),
z.literal("pt-PT"),
z.literal("ro-RO"),
z.literal("ru-RU"),
z.literal("sk-SK"),
z.literal("sl-SI"),
z.literal("sq-AL"),
z.literal("sr-SP"),
z.literal("sv-SE"),
z.literal("ta-IN"),
z.literal("te-IN"),
z.literal("th-TH"),
z.literal("tr-TR"),
z.literal("uk-UA"),
z.literal("uz-UZ"),
z.literal("vi-VN"),
z.literal("zh-CN"),
z.literal("zh-TW"),
z.literal("zu-ZA"),
]);
export type Locale = z.infer<typeof localeSchema>;
export const defaultLocale: Locale = "en-US";
export function isLocale(value: unknown): value is Locale {
return typeof value === "string" && value.length > 0;
return localeSchema.safeParse(value).success;
}
export function isCJKLocale(locale: Locale): boolean {
return locale === "zh-CN" || locale === "zh-TW" || locale === "ja-JP" || locale === "ko-KR";
}