// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

library fuchsia.intl.merge;

using fuchsia.intl;
using fuchsia.settings;

/// Raw inputs for producing a `fuchsia.intl.Profile`. This is only used
/// internally in `IntlPropertyProviderImpl`, for keeping track of incoming
/// settings before assembling a `fuchsia.intl.Profile`.
table Data {
    // Just language, region, script, and variant; no extensions.
    1: vector<fuchsia.intl.LocaleId>:10 language_tags;
    2: vector<fuchsia.intl.TimeZoneId>:10 time_zone_ids;
    3: vector<fuchsia.intl.CalendarId>:10 calendar_ids;
    4: fuchsia.intl.TemperatureUnit temperature_unit;
    // If set, the hour cycle is taken from this setting, and is otherwise defaulted from the
    // locale.
    5: fuchsia.settings.HourCycle hour_cycle;
};
