GT ClassMethodsLocales
determineLocale
GT determineLocale 方法 API 参考
概览
determineLocale 方法会根据用户偏好,从一组已批准的 locale 中确定最佳匹配的语言环境。
当不存在精确匹配时,它通过 locale 协商来选出最合适的语言环境。
const gt = new GT({
sourceLocale: 'en-US',
locales: ['en-US', 'es-ES', 'fr-FR', 'de-DE']
});
// 精确匹配
console.log(gt.determineLocale('en-US')); // 'en-US'
// 语言回退(fallback)
console.log(gt.determineLocale('en-GB')); // 'en-US' (最接近的英语变体)
// 多个首选项
console.log(gt.determineLocale(['fr-CA', 'es-MX', 'en-US'])); // 'es-ES' (最接近的西班牙语)
// 无匹配项
console.log(gt.determineLocale('it-IT')); // undefined参考资料
参数
Prop
Type
返回值
string | undefined - 返回最佳匹配的 locale;如果未找到匹配,则为 undefined
示例
用户 locale 协商
const gt = new GT({
sourceLocale: 'en-US',
locales: ['en-US', 'en-GB', 'es-ES', 'fr-FR']
});
// 模拟浏览器 Accept-Language 请求头
const userPreferences = ['fr-CA', 'en-GB', 'en'];
const bestMatch = gt.determineLocale(userPreferences);
console.log(bestMatch); // 根据偏好顺序匹配到 'fr-FR'注意事项
- 从已批准的 locales 中返回首个精确匹配
- 当没有对应的具体地区时,回退到语言级匹配
- 遵循输入数组中的偏好顺序
- 当未找到合适的匹配时返回 undefined
- 对在 Web 应用中实现 locale 协商至关重要
后续步骤
- 使用
requires-translation检查是否需要翻译 - 使用
is-same-language比较语言是否相同
本指南如何?