当前位置: 首页 > news >正文

【iOS(swift)笔记-10】利用类的继承来实现不同地区语言的显示

XCode项目原生开发有自带的可区分语言的功能体系,建议采用原生开发,此处利用类的继承来实现不同地区语言的显示是为了方便,而且在unity游戏开发中采用此法也挺灵活适用。

// 定义一个语言控制类

class LanguageController {

    // 根据系统切换

    static func CRL() -> CN? {

        /*

         print(Locale.current.language.languageCode)

         print(Locale.current.region?.identifier)

         print(Locale.current.identifier)

         打印结果

         简体中文

         Optional(zh)

         Optional("CN")

         zh_CN

         英文

         Optional(en)

         Optional("CN")

         en_CN

         香港

         Optional(zh)

         Optional("CN")

         zh_HK@rg=cnzzzz

         澳门

         Optional(zh)

         Optional("CN")

         zh_MO@rg=cnzzzz

         台湾和其他国家地区

         Optional(zh)

         Optional("CN")

         zh-Hant_CN

         

         */

        

        if let xxx = CRL_ {

            // 判断是否已经获取过当前系统语言,而不是每次创建实例都进行判断。

//            print("已获取过了")

        }

        else{

//            print("未获取过")

            let languageCode = Locale.current.language.languageCode

            switch languageCode {

            case "zh":

                let identifier = Locale.current.identifier

                if "zh_CN" == identifier {

                    // 大陆用简体

                    CRL_ = CN()

                }

                else {

                    // 其他用繁体

                    CRL_ = HK()

                }

                break

            case "en":

                CRL_ = EN()

                break

            default:

                CRL_ = EN()

                break

            }

        }

        return CRL_

    }

    

    private static var CRL_:CN?

    

    // 简体中文

    public class CN {

        public var txt:String = "简体中文"

    }

    

    // 繁体中文—香港

    private class HK : CN {

        override init() {

            super.init() // 调用父类的初始化器

            // 这里可以修改或基于父类的属性进行操作

            self.txt = "繁體中文"

        }

    }

    // 英文

    private class EN : CN {

       override init() {

           super.init() // 调用父类的初始化器

           // 这里可以修改或基于父类的属性进行操作

           self.txt = "English"

       }

   }

}

调用方法

print(LanguageController.CRL()?.txt)

相关文章:

  • Mcu_Bsdiff_Upgrade
  • 监督学习与无监督学习区别
  • Python输出与输入
  • ubuntu22.04上运行opentcs6.4版本
  • IP核警告,Bus Interface ‘AD_clk‘: ASSOCIATED_BUSIF bus parameter is missing.
  • 算法竞赛板子
  • LangChain4j入门AI(七)Function Calling整合实际业务
  • fatload使用方式
  • CYT4BB Dual Bank - 安全启动
  • Word2Vec模型学习和Word2Vec提取相似文本体验
  • 网络安全--PHP第一天
  • 数据结构核心知识总结:从基础到应用
  • Flask-SQLAlchemy核心概念:模型类与数据库表、类属性与表字段、外键与关系映射
  • 如何使用redis做限流(golang实现小样)
  • PHP 扇形的面积(Area of a Circular Sector)
  • 创建一个element plus项目
  • 使用Starrocks制作拉链表
  • 【DB2】SQL1639N 处理
  • 【寻找Linux的奥秘】第七章:虚拟地址空间
  • 1.设计师界面进行ui设计
  • 贵阳做网站方舟网络/好网站制作公司
  • 积分商城网站开发/域名收录
  • 毕业设计做网站怎么答辩/长沙seo优化