﻿// ***************************************************************************
// *
// * Copyright (C) 2013 International Business Machines
// * Corporation and others. All Rights Reserved.
// * Tool: org.unicode.cldr.icu.NewLdml2IcuConverter
// * Source File: <path>/common/main/zh_Hans_SG.xml
// *
// ***************************************************************************
zh_Hans_SG{
    NumberElements{
        latn{
            patterns{
                currencyFormat{"¤#,##0.00"}
            }
        }
    }
    Version{"2.0.82.45"}
    calendar{
        buddhist{
            DateTimePatterns{
                "zzzzah:mm:ss",
                "ahh:mm:ssz",
                "ah:mm:ss",
                "ahh:mm",
                "Gy年M月d日EEEE",
                "Gy年M月d日",
                "Gy年M月d日",
                "Gd/M/yy",
                "{1} {0}",
                "{1}{0}",
                "{1}{0}",
                "{1} {0}",
                "{1} {0}",
            }
        }
        generic{
            DateTimePatterns{
                "zzzzah:mm:ss",
                "ahh:mm:ssz",
                "ah:mm:ss",
                "ahh:mm",
                "Gy年M月d日EEEE",
                "Gy年M月d日",
                "Gy年M月d日",
                "dd/MM/yyGGGGG",
                "{1} {0}",
                "{1}{0}",
                "{1}{0}",
                "{1} {0}",
                "{1} {0}",
            }
            availableFormats{
                MEd{"M-dE"}
                MMMMdd{"M月d日"}
                MMdd{"MM-dd"}
                Md{"M-d"}
                yM{"y年M月"}
                yMEd{"y年M月d日，E"}
                yMd{"y年M月d日"}
            }
            intervalFormats{
                Hmv{
                    H{"vHH:mm–HH:mm"}
                    m{"vHH:mm–HH:mm"}
                }
                Hv{
                    H{"vHH–HH"}
                }
                MEd{
                    M{"M-dE至M-dE"}
                    d{"M-dE至M-dE"}
                }
                MMMEd{
                    d{"M月d日E至M月d日E"}
                }
                Md{
                    M{"M-d至M-d"}
                    d{"M-d至M-d"}
                }
                fallback{"{0}至{1}"}
                yM{
                    M{"y年M月至y年M月"}
                }
                yMEd{
                    M{"d/M/yE至d/M/yE"}
                    d{"d/M/yE至d/M/yE"}
                    y{"d/M/yE至d/M/yE"}
                }
                yMd{
                    M{"d/M/y至d/M/y"}
                    d{"d/M/y至d/M/y"}
                    y{"d/M/y至d/M/y"}
                }
            }
        }
        gregorian{
            DateTimePatterns{
                "zzzzah:mm:ss",
                "ahh:mm:ssz",
                "ah:mm:ss",
                "ahh:mm",
                "y年M月d日EEEE",
                "y年M月d日",
                "y年M月d日",
                "dd/MM/yy",
                "{1} {0}",
                "{1}{0}",
                "{1}{0}",
                "{1} {0}",
                "{1} {0}",
            }
            availableFormats{
                MEd{"M-dE"}
                MMMMdd{"M月d日"}
                MMdd{"MM-dd"}
                Md{"M-d"}
                yM{"y年M月"}
                yMEd{"y年M月d日，E"}
                yMd{"y年M月d日"}
            }
            intervalFormats{
                Hmv{
                    H{"vHH:mm–HH:mm"}
                    m{"vHH:mm–HH:mm"}
                }
                Hv{
                    H{"vHH–HH"}
                }
                MEd{
                    M{"M-dE至M-dE"}
                    d{"M-dE至M-dE"}
                }
                MMMEd{
                    d{"M月d日E至M月d日E"}
                }
                Md{
                    M{"M-d至M-d"}
                    d{"M-d至M-d"}
                }
                fallback{"{0}至{1}"}
                yM{
                    M{"y年M月至y年M月"}
                }
                yMEd{
                    M{"d/M/yE至d/M/yE"}
                    d{"d/M/yE至d/M/yE"}
                    y{"d/M/yE至d/M/yE"}
                }
                yMd{
                    M{"d/M/y至d/M/y"}
                    d{"d/M/y至d/M/y"}
                    y{"d/M/y至d/M/y"}
                }
            }
        }
        islamic{
            DateTimePatterns{
                "zzzzah:mm:ss",
                "ahh:mm:ssz",
                "ah:mm:ss",
                "ahh:mm",
                "Gy年M月d日EEEE",
                "Gy年M月d日",
                "Gy年M月d日",
                "Gd/M/yy",
                "{1} {0}",
                "{1}{0}",
                "{1}{0}",
                "{1} {0}",
                "{1} {0}",
            }
            availableFormats{
                Hm{"HH:mm"}
                Hms{"HH:mm:ss"}
            }
        }
        japanese{
            DateTimePatterns{
                "zzzzah:mm:ss",
                "ahh:mm:ssz",
                "ah:mm:ss",
                "ahh:mm",
                "Gy年M月d日EEEE",
                "Gy年M月d日",
                "Gy年M月d日",
                "Gd/M/yy",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
                "{1} {0}",
            }
        }
        roc{
            DateTimePatterns{
                "zzzzah:mm:ss",
                "ahh:mm:ssz",
                "ah:mm:ss",
                "ahh:mm",
                "Gy年M月d日EEEE",
                "Gy年M月d日",
                "Gy年M月d日",
                "Gd/M/yy",
                "{1} {0}",
                "{1}{0}",
                "{1}{0}",
                "{1} {0}",
                "{1} {0}",
            }
        }
    }
    fields{
        era{
            dn{"纪元"}
        }
    }
}
