@@ -0,0 +1,2250 @@
+/*%0A *  Copyright 2016 __0x277F %3C0x277F@gmail.com%3E%0A *  and other copyright owners as documented in the project's IP log.%0A *%0A *  Licensed under the Apache License, Version 2.0 (the %22License&quot%EF%BF%BC;%0A *  you may not use this file except in compliance with the License.%0A *  You may obtain a copy of the License at%0A *%0A *      http://www.apache.org/licenses/LICENSE-2.0%0A *%0A *  Unless required by applicable law or agreed to in writing, software%0A *  distributed under the License is distributed on an %22AS IS%22 BASIS,%0A *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.%0A *  See the License for the specific language governing permissions and%0A *  limitations under the License.%0A *%0A */%0Apackage org.basinmc.faucet.lang;%0A%0Aimport java.lang.annotation.ElementType;%0Aimport java.lang.annotation.Retention;%0Aimport java.lang.annotation.RetentionPolicy;%0Aimport java.lang.annotation.Target;%0A%0A/**%0A * Annotates a field or a local variable to signify that string values that each%0A * might represent will be transformed (at plugin load time) into an unlocalized%0A * string, which will be localized during outgoing packet processing for%0A * significant packets, such as chat, item metadata (including name and lore), etc.%0A */%0A@Retention(RetentionPolicy.RUNTIME)%0A@Target(%7BElementType.FIELD, ElementType.LOCAL_VARIABLE, ElementType.TYPE%7D)%0Apublic @interface Localize %7B%0A    /**%0A     * The key for which localization will be attempted. By default this will be%0A     * filled by the string being targeted.%0A     * @return A string representation of the key%0A     */%0A    String value() default %22$PROVIDED$%22;%0A%0A    /**%0A     * If no valid localization for the player is found, the locale to use. If this%0A     * is unable to function for whatever reason, the player will receive the key%0A     * instead.%0A     * @return A locale string%0A     */%0A    String defaultLocale() default %22en_US%22;%0A%0A    /**%0A     * A directory path where locale files (which %3Ci%3Emust%3C/i%3E follow the format of%0A     * %22en_US.lang%22 can be found. If the given path is checked and a locale file is%0A     * not found, the %7B@link Localize#defaultLocale()%7D will be attempted instead,%0A     * then the key will be sent instead.%0A     * @return A locale string%0A     */%0A    String localePath() default %22/lang/%22;%0A%7D%0A

Add a localization annotation. Because implementations are a lot of work.