Giter Site home page Giter Site logo

zuolufei / hclanguageswitch Goto Github PK

View Code? Open in Web Editor NEW
7.0 0.0 0.0 468 KB

应用内切换语言国际化方案. In-app switching language internationalization program

License: MIT License

Swift 91.94% Ruby 0.54% Objective-C 7.52%
globalization swift language

hclanguageswitch's Introduction

HCLanguageSwitch

应用内切换语言国际化方案

使用前请先下载、运行并查看Demo。

【Demo演示】

演示1

/**********************************************************************/

【手动导入】

手动导入LanguageSwitch文件夹即可

/**********************************************************************/

方法说明

  1. 在AppDelegate中初始化语言,默认是英语
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    /**
    初始化国际化为汉语,默认是英语
    注意:只在程序第一次启动初始化时才生效
    */
    HCLocalizableManager.share.initializeLanguage("zh-Hans")
    return true
}
  1. 切换语言
// 切换语言,参数为bundleName
HCLocalizableManager.share.updateLanguage("en")
  1. 业务中使用方式
/**
 文字国际化流程:
 1.导入LanguageSwitch文件夹内容到项目中
 2.创建Localizable.strings国际化文档,并将国际化文件导入其中,具体请移步Localizable.strings文件,关于Localizable.strings创建步骤请自行百度
 3.使用如下方式开始文字国际化
 */
func textLocalizeble() {
    // 使用方式一:对语言切换感知度低的界面,采用最近宏定义取值(如界面不是常驻界面,加载必刷新,对语言切换响应感知度极低)
     titleWordLabel.text = DEF_LOCALIZED_STRING(key: "first_inputName")
     changeLanuageBtn.setTitle(DEF_LOCALIZED_STRING(key: "first_changeLanguage") , for: .normal)
     contentTextField.placeholder = DEF_LOCALIZED_STRING(key: "first_name")
     // 字符串拼接
     currentLanguageLabel.text = String.init(format: DEF_LOCALIZED_STRING(key:"first_currentLanguage%@%@"), HCLocalizableResourcesFilter.share.currentLanguageName, DEF_LOCALIZED_STRING(key: "first_inputName"))
     
     // 使用方法二:对语言感知度高,采用分类属性方法,此方法通过关联技术,会根据语言切换立即感知,并且切换语言(如界面是常驻界面,如UITabbarController界面,切换语言不会刷新界面,但是对语言切换感知度高,需要采用分类属性方法)
     titleWordLabel.hc_Text = "first_inputName"
     changeLanuageBtn.hc_SetTitle("first_changeLanguage", for: .normal)
     contentTextField.hc_PlaceholderSwitch = "first_name"
     // 属性方法的字符串拼接
     currentLanguageLabel.hc_Text = "first_currentLanguage%@%@" + "&&&" + HCLocalizableResourcesFilter.share.currentLanguageName + "&&&" + "first_inputName"
    
     
     /// 使用方法三,在特殊情况需要传输字符时,需要手动监听语言更新,注意:参数使用&&&进行分割
     currentLanguageLabel.hc_Text = "first_currentLanguage%@%@" + "&&&" + HCLocalizableResourcesFilter.share.currentLanguageName + "&&&" + "first_inputName"
     contentTextField.localizableDidChange { [weak self] in
         self?.currentLanguageLabel.text = String.init(format: DEF_LOCALIZED_STRING(key:"first_currentLanguage%@%@"), HCLocalizableResourcesFilter.share.currentLanguageName, DEF_LOCALIZED_STRING(key: "first_inputName"))
     }
}

/**
图片国际化流程:
1.导入LanguageSwitch文件夹内容到项目中
2.导入需要国际化图片,并将国际化图片根据语言区配置到xxxx.plist中,具体参考此Demo中的LocalizableImage.plist文件,注意此处的根key一定要使用国际化文件中的bundle的简写,如英语的bundle名字是“en”,中文的bundle名字是"zh-Hans"
3.将图片统一Key配置到HCLocalizableImage中,方便读取
4.使用功能如下方法开始图片国际化
*/
func textLocalizebleImage() {
    // 使用方式一:对语言切换感知度低的界面,采用最近宏定义取值(如此界面不是常驻界面,加载必刷新,对语言切换响应感知度极低)
    currentImageView.image = DEF_LOCALIZED_IMAGE(key: "HC_App_Store")
    
    // 使用方法二:对语言感知度高,采用分类属性方法,此方法通过关联技术,会根据语言切换立即感知,并且切换语言(如此界面是常驻界面,如UITabbarController界面,切换语言不会刷新界面,但是对语言切换感知度高,需要采用分类属性方法)
    currentImageView.hc_Image = "HC_App_Store"
}

/**********************************************************************/

【示例】

请下载、运行并查看Demo

/**********************************************************************/

【贡献】

如果您发现了bug或需要帮助,请打开一个issue或者提交一个pull request,十分感谢

hclanguageswitch's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.