diff options
| author | Arne Schwabe <arne@rfc2549.org> | 2017-05-31 16:06:38 +0200 | 
|---|---|---|
| committer | Arne Schwabe <arne@rfc2549.org> | 2017-05-31 16:06:38 +0200 | 
| commit | 1fb25929bfed5586a0d8fe490bcf6535a49935d8 (patch) | |
| tree | 4ac24d7236ad60470125a449e9fb1712a7c662da | |
| parent | f65cdd5f66430088d29f96a05d86583f2bd9e37c (diff) | |
Implement localisation of bit/s and B. (cloes #685)
This should the mega octet (French) user and whatever characters Cyrillic uses happy
5 files changed, 63 insertions, 32 deletions
| diff --git a/main/src/main/java/de/blinkt/openvpn/core/DeviceStateReceiver.java b/main/src/main/java/de/blinkt/openvpn/core/DeviceStateReceiver.java index c7760a0e..7b5946a3 100644 --- a/main/src/main/java/de/blinkt/openvpn/core/DeviceStateReceiver.java +++ b/main/src/main/java/de/blinkt/openvpn/core/DeviceStateReceiver.java @@ -103,7 +103,7 @@ public class DeviceStateReceiver extends BroadcastReceiver implements ByteCountL          if (windowtraffic < TRAFFIC_LIMIT) {
              screen = connectState.DISCONNECTED;
              VpnStatus.logInfo(R.string.screenoff_pause,
 -                    OpenVPNService.humanReadableByteCount(TRAFFIC_LIMIT, false), TRAFFIC_WINDOW);
 +                    "64 kB", TRAFFIC_WINDOW);
              mManagement.pause(getPauseReason());
          }
 diff --git a/main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java b/main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java index a4c66e9d..753ef0ab 100644 --- a/main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java +++ b/main/src/main/java/de/blinkt/openvpn/core/OpenVPNService.java @@ -19,6 +19,7 @@ import android.content.SharedPreferences;  import android.content.pm.PackageManager;  import android.content.pm.ShortcutManager;  import android.content.res.Configuration; +import android.content.res.Resources;  import android.net.ConnectivityManager;  import android.net.VpnService;  import android.os.Binder; @@ -117,19 +118,42 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac      };      // From: http://stackoverflow.com/questions/3758606/how-to-convert-byte-size-into-human-readable-format-in-java -    public static String humanReadableByteCount(long bytes, boolean mbit) { -        if (mbit) +    public static String humanReadableByteCount(long bytes, boolean speed, Resources res) { +        if (speed)              bytes = bytes * 8; -        int unit = mbit ? 1000 : 1024; -        if (bytes < unit) -            return bytes + (mbit ? "\u2009bit" : "\u2009B"); - -        int exp = (int) (Math.log(bytes) / Math.log(unit)); -        String pre = (mbit ? "kMGTPE" : "KMGTPE").charAt(exp - 1) + (mbit ? "" : ""); -        if (mbit) -            return String.format(Locale.getDefault(), "%.1f %sbit", bytes / Math.pow(unit, exp), pre); +        int unit = speed ? 1000 : 1024; + + +        int exp = Math.min((int) (Math.log(bytes) / Math.log(unit)), 3); + +        float bytesUnit = Math.round(bytes / Math.pow(unit, exp)); + +        if (speed) +            switch (exp) { +                case 0: +                    return res.getString(R.string.bits_per_second, bytesUnit); +                case 1: +                    return res.getString(R.string.kbits_per_second, bytesUnit); +                case 2: +                    return res.getString(R.string.mbits_per_second, bytesUnit); +                default: +                    return res.getString(R.string.gbits_per_second, bytesUnit); +            }          else -            return String.format(Locale.getDefault(), "%.1f %sB", bytes / Math.pow(unit, exp), pre); +            switch (exp) { +                case 0: +                    return res.getString(R.string.volume_byte, bytesUnit); +                case 1: +                    return res.getString(R.string.volume_kbyte, bytesUnit); +                case 2: +                    return res.getString(R.string.volume_mbyte, bytesUnit); +                default: +                    return res.getString(R.string.volume_gbyte, bytesUnit); + +            } + + +      }      @Override @@ -1051,10 +1075,10 @@ public class OpenVPNService extends VpnService implements StateListener, Callbac      public void updateByteCount(long in, long out, long diffIn, long diffOut) {          if (mDisplayBytecount) {              String netstat = String.format(getString(R.string.statusline_bytecount), -                    humanReadableByteCount(in, false), -                    humanReadableByteCount(diffIn / OpenVPNManagement.mBytecountInterval, true), -                    humanReadableByteCount(out, false), -                    humanReadableByteCount(diffOut / OpenVPNManagement.mBytecountInterval, true)); +                    humanReadableByteCount(in, false, getResources()), +                    humanReadableByteCount(diffIn / OpenVPNManagement.mBytecountInterval, true, getResources()), +                    humanReadableByteCount(out, false, getResources()), +                    humanReadableByteCount(diffOut / OpenVPNManagement.mBytecountInterval, true, getResources()));              int priority = mNotificationAlwaysVisible ? PRIORITY_DEFAULT : PRIORITY_MIN;              showNotification(netstat, null, priority, mConnecttime, LEVEL_CONNECTED); diff --git a/main/src/main/java/de/blinkt/openvpn/fragments/GraphFragment.java b/main/src/main/java/de/blinkt/openvpn/fragments/GraphFragment.java index e9e6fa47..8273ca9b 100644 --- a/main/src/main/java/de/blinkt/openvpn/fragments/GraphFragment.java +++ b/main/src/main/java/de/blinkt/openvpn/fragments/GraphFragment.java @@ -7,6 +7,7 @@ package de.blinkt.openvpn.fragments;  import android.app.Fragment;  import android.content.Context; +import android.content.res.Resources;  import android.os.Bundle;  import android.os.Handler;  import android.support.annotation.NonNull; @@ -135,12 +136,13 @@ public class GraphFragment extends Fragment implements VpnStatus.ByteCountListen          long now = (System.currentTimeMillis() / 100) - firstTs;          int interval = OpenVPNManagement.mBytecountInterval * 10; +        Resources res = getActivity().getResources();          final String netstat = String.format(getString(R.string.statusline_bytecount), -                humanReadableByteCount(in, false), -                humanReadableByteCount(diffIn / OpenVPNManagement.mBytecountInterval, true), -                humanReadableByteCount(out, false), -                humanReadableByteCount(diffOut / OpenVPNManagement.mBytecountInterval, true)); +                humanReadableByteCount(in, false, res), +                humanReadableByteCount(diffIn / OpenVPNManagement.mBytecountInterval, true, res), +                humanReadableByteCount(out, false, res), +                humanReadableByteCount(diffOut / OpenVPNManagement.mBytecountInterval, true, res));          getActivity().runOnUiThread(new Runnable() {              @Override @@ -225,6 +227,7 @@ public class GraphFragment extends Fragment implements VpnStatus.ByteCountListen              YAxis yAxis = holder.chart.getAxisLeft();              yAxis.setLabelCount(5, false); +            final Resources res = getActivity().getResources();              yAxis.setValueFormatter(new IAxisValueFormatter() {                  @Override                  public String getFormattedValue(float value, AxisBase axis) { @@ -233,7 +236,7 @@ public class GraphFragment extends Fragment implements VpnStatus.ByteCountListen                      if (mLogScale)                          value = (float) Math.pow(10, value)/8; -                    return humanReadableByteCount((long) value, true) + "/s"; +                    return humanReadableByteCount((long) value, true, res);                  }              }); @@ -265,13 +268,6 @@ public class GraphFragment extends Fragment implements VpnStatus.ByteCountListen              return convertView;          } - -        public void getAverageForGraphList(boolean in, int timeperiod) { - - - -        } -          private LineData getDataSet(int timeperiod) {              LinkedList<Entry> dataIn = new LinkedList<>(); diff --git a/main/src/main/java/de/blinkt/openvpn/fragments/LogFragment.java b/main/src/main/java/de/blinkt/openvpn/fragments/LogFragment.java index 7962aac5..30f922ae 100644 --- a/main/src/main/java/de/blinkt/openvpn/fragments/LogFragment.java +++ b/main/src/main/java/de/blinkt/openvpn/fragments/LogFragment.java @@ -16,6 +16,7 @@ import android.content.ClipboardManager;  import android.content.Context;  import android.content.DialogInterface;  import android.content.Intent; +import android.content.res.Resources;  import android.database.DataSetObserver;  import android.graphics.drawable.Drawable;  import android.os.Bundle; @@ -117,8 +118,9 @@ public class LogFragment extends ListFragment implements StateListener, SeekBar.      @Override      public void updateByteCount(long in, long out, long diffIn, long diffOut) {          //%2$s/s %1$s - ↑%4$s/s %3$s -        final String down = String.format("%2$s/s %1$s", humanReadableByteCount(in, false), humanReadableByteCount(diffIn / OpenVPNManagement.mBytecountInterval, true)); -        final String up = String.format("%2$s/s %1$s", humanReadableByteCount(out, false), humanReadableByteCount(diffOut / OpenVPNManagement.mBytecountInterval, true)); +        Resources res = getActivity().getResources(); +        final String down = String.format("%2$s %1$s", humanReadableByteCount(in, false, res), humanReadableByteCount(diffIn / OpenVPNManagement.mBytecountInterval, true, res)); +        final String up = String.format("%2$s %1$s", humanReadableByteCount(out, false, res), humanReadableByteCount(diffOut / OpenVPNManagement.mBytecountInterval, true, res));          if (mUpStatus != null && mDownStatus != null) {              if (getActivity() != null) { diff --git a/main/src/main/res/values/strings.xml b/main/src/main/res/values/strings.xml index c450a00a..c20d1fe4 100755 --- a/main/src/main/res/values/strings.xml +++ b/main/src/main/res/values/strings.xml @@ -250,7 +250,7 @@      <string name="state_tcp_connect">Connecting (TCP)</string>      <string name="state_auth_failed">Authentication failed</string>      <string name="state_nonetwork">Waiting for usable network</string> -    <string name="statusline_bytecount">↓%2$s/s %1$s - ↑%4$s/s %3$s</string> +    <string name="statusline_bytecount">↓%2$s %1$s - ↑%4$s %3$s</string>      <string name="notifcation_title_notconnect">Not connected</string>      <string name="start_vpn_title">Connecting to VPN %s</string>      <string name="start_vpn_ticker">Connecting to VPN %s</string> @@ -408,7 +408,7 @@      <string name="novpn_selected">No VPN selected.</string>      <string name="defaultvpn">Default VPN</string>      <string name="defaultvpnsummary">VPN used in places where a default VPN needed. These are currently on boot, for Always-On and the Quick Settings Tile.</string> -    <string name="vpnselected">Currently slected VPN: \'%s\'</string> +    <string name="vpnselected">Currently selected VPN: \'%s\'</string>      <string name="reconnect">Reconnect</string>      <string name="qs_title">Toggle VPN</string>      <string name="qs_connect">Connect to %s</string> @@ -432,5 +432,14 @@      <string name="last5minutes">Last 5 minutes</string>      <string name="data_in">In</string>      <string name="data_out">Out</string> +    <string name="bits_per_second">%.0f bit/s</string> +    <string name="kbits_per_second">%.1f kbit/s</string> +    <string name="mbits_per_second">%.1f Mbit/s</string> +    <string name="gbits_per_second">%.1f Gbit/s</string> + +    <string name="volume_byte">%.0f B</string> +    <string name="volume_kbyte">%.1f kB</string> +    <string name="volume_mbyte">%.1f MB</string> +    <string name="volume_gbyte">%.1f GB</string>  </resources> | 
