java_util/locale.go (163 lines of code) (raw):

/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package java_util // LocaleEnum is Locale enumeration value type LocaleEnum int // Locale struct enum const ( ENGLISH LocaleEnum = iota FRENCH GERMAN ITALIAN JAPANESE KOREAN CHINESE SIMPLIFIED_CHINESE TRADITIONAL_CHINESE FRANCE GERMANY ITALY JAPAN KOREA CHINA PRC TAIWAN UK US CANADA CANADA_FRENCH ROOT ) // Locale => java.util.Locale type Locale struct { // ID is used to implement enumeration id LocaleEnum lang string county string } func (locale *Locale) County() string { return locale.county } func (locale *Locale) Lang() string { return locale.lang } func (locale *Locale) String() string { if len(locale.county) != 0 { return locale.lang + "_" + locale.county } return locale.lang } // LocaleHandle => com.alibaba.com.caucho.hessian.io.LocaleHandle object type LocaleHandle struct { Value string `hessian:"value"` } func (LocaleHandle) JavaClassName() string { return "com.alibaba.com.caucho.hessian.io.LocaleHandle" } // locales is all const Locale struct slice // localeMap is key = locale.String() value = locale struct var ( locales []Locale = make([]Locale, 22, 22) localeMap map[string](Locale) = make(map[string](Locale), 22) ) // init java.util.Locale static object func init() { locales[ENGLISH] = Locale{ id: ENGLISH, lang: "en", county: "", } locales[FRENCH] = Locale{ id: FRENCH, lang: "fr", county: "", } locales[GERMAN] = Locale{ id: GERMAN, lang: "de", county: "", } locales[ITALIAN] = Locale{ id: ITALIAN, lang: "it", county: "", } locales[JAPANESE] = Locale{ id: JAPANESE, lang: "ja", county: "", } locales[KOREAN] = Locale{ id: KOREAN, lang: "ko", county: "", } locales[CHINESE] = Locale{ id: CHINESE, lang: "zh", county: "", } locales[SIMPLIFIED_CHINESE] = Locale{ id: SIMPLIFIED_CHINESE, lang: "zh", county: "CN", } locales[TRADITIONAL_CHINESE] = Locale{ id: TRADITIONAL_CHINESE, lang: "zh", county: "TW", } locales[FRANCE] = Locale{ id: FRANCE, lang: "fr", county: "FR", } locales[GERMANY] = Locale{ id: GERMANY, lang: "de", county: "DE", } locales[ITALY] = Locale{ id: ITALY, lang: "it", county: "it", } locales[JAPAN] = Locale{ id: JAPAN, lang: "ja", county: "JP", } locales[KOREA] = Locale{ id: KOREA, lang: "ko", county: "KR", } locales[CHINA] = locales[SIMPLIFIED_CHINESE] locales[PRC] = locales[SIMPLIFIED_CHINESE] locales[TAIWAN] = locales[TRADITIONAL_CHINESE] locales[UK] = Locale{ id: UK, lang: "en", county: "GB", } locales[US] = Locale{ id: US, lang: "en", county: "US", } locales[CANADA] = Locale{ id: CANADA, lang: "en", county: "CA", } locales[CANADA_FRENCH] = Locale{ id: CANADA_FRENCH, lang: "fr", county: "CA", } locales[ROOT] = Locale{ id: ROOT, lang: "", county: "", } for _, locale := range locales { localeMap[locale.String()] = locale } } // ToLocale get locale from enum func ToLocale(e LocaleEnum) *Locale { return &locales[e] } // GetLocaleFromHandler is use LocaleHandle get Locale func GetLocaleFromHandler(localeHandler *LocaleHandle) *Locale { locale := localeMap[localeHandler.Value] return &locale }