# Flexi Locale [![GitHub license](https://img.shields.io/github/license/BetterAndroid/FlexiLocale?color=blue)](https://github.com/BetterAndroid/FlexiLocale/blob/master/LICENSE) [![GitHub release](https://img.shields.io/github/v/release/BetterAndroid/FlexiLocale?display_name=release&logo=github&color=green)](https://github.com/BetterAndroid/FlexiLocale/releases) [![Telegram](https://img.shields.io/badge/discussion-Telegram-blue.svg?logo=telegram)](https://t.me/BetterAndroid) [![Telegram](https://img.shields.io/badge/discussion%20dev-Telegram-blue.svg?logo=telegram)](https://t.me/HighCapable_Dev) LOGO An easy generation Android i18ns string call Gradle plugin. English | [简体中文](https://github.com/BetterAndroid/FlexiLocale/blob/master/README-zh-CN.md) | LOGO | [BetterAndroid](https://github.com/BetterAndroid) | |---------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------| This project belongs to the above-mentioned organization, **click the link above to follow this organization** and discover more good projects. ## What's this This is a Gradle plugin for automatically generating i18ns string calling code functions for Android projects. In Android projects, to use i18ns string, you need to define them in `strings.xml` and then call them using `context.getString(R.string.xxx)`, which is very cumbersome and inflexible. That's why this project was born. With this plugin, you now only need to instantiate the `AppLocale` class generated by the plugin once, and then you can use it anywhere. > Traditional Style ```kotlin val appName = context.getString(R.string.app_name) ``` > Modern Style ```kotlin val locale by lazy { AppLocale.attach(context) } val appName = locale.appName ``` If you are still using Java, the writing method remains the same. ```java var locale = AppLocale.attach(context); var appName = locale.getAppName(); ``` ## Compatibility The theory supports not very old Gradle, the recommended version is `7.x.x` and above. Android projects containing Kotlin plugins are supported, other types of projects are not supported yet. > Build Script Language - Kotlin DSL It is recommended to use this language as the build script language first, which is also the language currently recommended by Gradle. - Groovy DSL Some functions may be incompatible, support will be gradually dropped in the future, and some functions may become unavailable. ## Get Started - [Click here](https://github.com/BetterAndroid/FlexiLocale/blob/master/docs/guide.md) to view the documentation ## Changelog - [Click here](https://github.com/BetterAndroid/FlexiLocale/blob/master/docs/changelog.md) to view the historical changelog ## Promotion If you are looking for a Gradle plugin that can automatically manage Gradle project dependencies, you can check out the [SweetDependency](https://github.com/HighCapable/SweetDependency) project. If you are looking for a Gradle plugin that can automatically generate properties key-values, you can check out the [SweetProperty](https://github.com/HighCapable/SweetProperty) project. This project also uses **SweetDependency** and **SweetProperty**. ## Star History ![Star History Chart](https://api.star-history.com/svg?repos=BetterAndroid/FlexiLocale&type=Date) ## License - [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0) ``` Apache License Version 2.0 Copyright (C) 2019-2023 HighCapable Licensed 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 https://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. ``` Copyright © 2019-2023 HighCapable