Skip to main content

class Language

<?php

class Language {

    private static $MESSAGES = array(
        'en'    =>  array(
            'user'  =>  array(
                'success'   =>  array(
                    'change_email_success'  =>  'Your email address has been changed successfully!<br>Please using new email address to login the next time.',
                    'reissue_activation_success'    =>  '新しいURLが再発行されました。メールをご確認ください。'
                ),
                'error'     =>  array(
                    'url_expired'           =>  'URLの有効期限が過ぎました。お手数ですが、再度ログイン情報を変更してください。',
                    'invalid_token'         =>  '認証コードは不正です。',
                    'email_duplicated'      =>  'This email address has already been registered.',
                    'activate_url_expired'  =>  'URLの有効期限が過ぎました。 お手数ですが、以下のボタンをクリックし、URLの再発行を行ってください。何かご不明な点がありましたら、info@kotora.jpまでご連絡ください。'
                )
            ),
            'clogo' =>  array(
                'confirm'   =>  array(
                    'delete'    =>  'Do you really want to delete?'
                )
            ),
            'common'    =>  array(
                'success'   =>  array(

                ),
                'error'     =>  array(
                    'unknown_error'     =>  '不明なエラー。',
                    'invalid_url'       =>  'Incorrect URL.',
                    'no_data'           =>  'There is no data.',
                    'invalid_action'    =>  array(
                        'nUser'         =>  'この機能をご利用になる場合は会員登録(クライアント)が必要です。会員登録(クライアント)をご希望の方は一度ログアウトして、会員登録ボタンをクリックしてください。ログアウトは<a href="login.php?logout=true">こちら</a>から',
                        'cUser'         =>  'この機能をご利用になる場合は会員登録(プロフェッショナル)が必要です。会員登録(プロフェッショナル)をご希望の方は一度ログアウトして、会員登録ボタンをクリックしてください。ログアウトは<a href="login.php?logout=true">こちら</a>から',
                        'nobody'        =>  'この機能はログインしていないと使用できない機能です。ログインしてからお使いください。<br>ログインは<a href="@loginUrl">こちら</a>。<br>まだ会員登録がお済みでない方<a href="@registerUrl">はこちら</a>。'
                    )
                )
            )
        ),
        'jp'    =>  array(
            'user'  =>  array(
                'success'   =>  array(
                    'change_email_success'  =>  'メールアドレスの変更が完了しました。次回ログインの際は、新しいメールアドレスをご使用ください。',
                    'reissue_activation_success'    =>  '新しいURLが再発行されました。メールをご確認ください。'
                ),
                'error'     =>  array(
                    'url_expired'           =>  'URLの有効期限が過ぎました。お手数ですが、再度ログイン情報を変更してください。',
                    'invalid_token'         =>  '認証コードは不正です。',
                    'email_duplicated'      =>  'メールアドレスは既に登録されています。',
                    'activate_url_expired'  =>  'URLの有効期限が過ぎました。 お手数ですが、以下のボタンをクリックし、URLの再発行を行ってください。何かご不明な点がありましたら、info@kotora.jpまでご連絡ください。'
                )
            ),
            'clogo' =>  array(
                'confirm'   =>  array(
                    'delete'    =>  '削除してよろしいでしょうか。'
                )
            ),
            'common'    =>  array(
                'success'   =>  array(

                ),
                'error'     =>  array(
                    'unknown_error'     =>  '不明なエラー。',
                    'invalid_url'       =>  'URLは不正です。',
                    'no_data'           =>  'データはありません。',
                    'invalid_action'    =>  array(
                        'nUser'         =>  'この機能をご利用になる場合は会員登録(クライアント)が必要です。会員登録(クライアント)をご希望の方は一度ログアウトして、会員登録ボタンをクリックしてください。ログアウトは<a href="login.php?logout=true">こちら</a>から',
                        'cUser'         =>  'この機能をご利用になる場合は会員登録(プロフェッショナル)が必要です。会員登録(プロフェッショナル)をご希望の方は一度ログアウトして、会員登録ボタンをクリックしてください。ログアウトは<a href="login.php?logout=true">こちら</a>から',
                        'nobody'        =>  'この機能はログインしていないと使用できない機能です。ログインしてからお使いください。<br>ログインは<a href="@loginUrl">こちら</a>。<br>まだ会員登録がお済みでない方<a href="@registerUrl">はこちら</a>。'
                    )
                )
            )
        )
    );

    /**
     * Get translated message
     *
     * @param string $messageId
     * @param array $replaceData
     * @return array|mixed|string
     */
    public static function getMessage($messageId, $replaceData = array())
    {
        // Separate keys and values of replace data into 2 arrays
        $placeHolders = !empty($replaceData) ? array_keys($replaceData) : array();
        $replaceValues = !empty($replaceData) ? array_values($replaceData) : array();

        return self::translateMessage($messageId, $placeHolders, $replaceValues);
    }

    /**
     * Get translated message by key in dot notation form
     * Support replace placeholder with real value
     *
     * @param string $id
     * @param array $placeHolders
     * @param array $replaceValues
     * @return array|mixed|string
     */
    public static function translateMessage($id, $placeHolders = array(), $replaceValues = array())
    {
        $keys = explode('.', $id);

        $returnMsg = self::$MESSAGES;

        if (empty($keys)) {
            $returnMsg = '';
        } else {
            foreach ($keys as $key) {
                $returnMsg = isset($returnMsg[$key]) ? $returnMsg[$key] : (is_string($returnMsg) ? $returnMsg : '');
            }
        }

        // Replace placeholder with real value
        if (!empty($returnMsg) && !empty($placeHolders) && !empty($replaceValues)) {

            if (count($placeHolders) == count($replaceValues)) {
                foreach ($placeHolders as $index => $placeHolder) {
                    $returnMsg = str_replace($placeHolder, $replaceValues[$index], $returnMsg);
                }
            }
        }

        return $returnMsg;
    }
}


Comments

Popular posts from this blog

AWS Elasticache Memcached connection

https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/accessing-elasticache.html#access-from-outside-aws http://hourlyapps.blogspot.com/2010/06/examples-of-memcached-commands.html Access memcached https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/GettingStarted.AuthorizeAccess.html Zip include hidden file https://stackoverflow.com/questions/12493206/zip-including-hidden-files phpmemcachedadmin ~ phpMyAdmin or phpPgAdmin ... telnet mycachecluster.eaogs8.0001.usw2.cache.amazonaws.com 11211 stats items stats cachedump 27 100 https://docs.aws.amazon.com/AmazonElastiCache/latest/mem-ug/VPCs.EC.html https://lzone.de/cheat-sheet/memcached VPC ID Security Group ID (sg-...) Cluster: The identifier for the cluster memcached1 Creation Time: The time (UTC) when the cluster was created January 9, 2019 at 11:47:16 AM UTC+7 Configuration Endpoint: The configuration endpoint of the cluster memcached1.ahgofe.cfg.usw1.cache.amazonaws.com:11211 St...

Notes Windows 10 Virtualbox config, PHP Storm Japanese, custom PHP, Apache build, Postgresql

 cmd => Ctrl + Shift + Enter mklink "C:\Users\HauNT\Videos\host3" "C:\Windows\System32\drivers\etc\hosts" https://www.quora.com/How-to-create-a-router-in-php https://serverfault.com/questions/225155/virtualbox-how-to-set-up-networking-so-both-host-and-guest-can-access-internet 1 NAT + 1 host only config https://unix.stackexchange.com/questions/115464/how-to-properly-set-up-2-network-interfaces-in-centos-running-in-virtualbox DEVICE=eth0 TYPE=Ethernet #BOOTPROTO=dhcp BOOTPROTO=none #IPADDR=10.9.11.246 #PREFIX=24 #GATEWAY=10.9.11.1 #IPV4_FAILURE_FATAL=yes #HWADDR=08:00:27:CC:AC:AC ONBOOT=yes NAME="System eth0" [root@localhost www]# cat /etc/sysconfig/network-scripts/ifcfg-eth1 # Advanced Micro Devices, Inc. [AMD] 79c970 [PCnet32 LANCE] DEVICE=eth1 IPADDR=192.168.56.28 <= no eff => auto like DHCP #GATEWAY=192.168.56.1 #BOOTPROTO=dhcp BOOTPROTO=static <= no eff ONBOOT=yes HWADDR=08:00:27:b4:20:10 [root@localhost www]# ...

Rocket.Chat DB schema

_raix_push_notifications avatars.chunks avatars.files instances meteor_accounts_loginServiceConfiguration meteor_oauth_pendingCredentials meteor_oauth_pendingRequestTokens migrations rocketchat__trash rocketchat_cron_history rocketchat_custom_emoji rocketchat_custom_sounds rocketchat_import rocketchat_integration_history rocketchat_integrations rocketchat_livechat_custom_field rocketchat_livechat_department rocketchat_livechat_department_agents rocketchat_livechat_external_message rocketchat_livechat_inquiry rocketchat_livechat_office_hour rocketchat_livechat_page_visited rocketchat_livechat_trigger rocketchat_message rocketchat_oauth_apps rocketchat_oembed_cache rocketchat_permissions rocketchat_raw_imports rocketchat_reports rocketchat_roles rocketchat_room rocketchat_settings rocketchat_smarsh_history rocketchat_statistics rocketchat_subscription rocketchat_uploads system.indexes users usersSessions https://rocket.chat/docs/developer-guides/sc...