mirror of
https://github.com/oxen-io/session-android.git
synced 2025-08-11 11:57:24 +00:00
Strings work
Squashed commit of the following: commit86cab0e11e
Author: ThomasSession <thomas.r@getsession.org> Date: Fri Aug 30 10:17:04 2024 +1000 Bringing my xml dialog styling from my 'Standardise message deletion' branch commit706d1aadd8
Author: ThomasSession <thomas.r@getsession.org> Date: Fri Aug 30 09:49:48 2024 +1000 fixing up clear data dialog Removing unused code commitf90599451f
Author: Al Lansley <al@oxen.io> Date: Fri Aug 30 09:13:51 2024 +1000 Replaced 'now' with 12/24 hour time commit16b8ad46c0
Author: alansley <aclansley@gmail.com> Date: Thu Aug 29 17:34:03 2024 +1000 Fix two one-liner issues commit4c6c450b32
Merge:052f910d69
beb89d5b74
Author: ThomasSession <thomas.r@getsession.org> Date: Thu Aug 29 17:07:16 2024 +1000 Merge branch 'strings-squashed' of https://github.com/oxen-io/session-android into strings-squashed commit052f910d69
Author: ThomasSession <thomas.r@getsession.org> Date: Thu Aug 29 17:06:53 2024 +1000 More bold fixing commitbeb89d5b74
Author: fanchao <git@fanchao.dev> Date: Thu Aug 29 17:00:37 2024 +1000 Fix incorrect group member left message commit5773f05a5c
Merge:d35482daba
1cec477020
Author: ThomasSession <thomas.r@getsession.org> Date: Thu Aug 29 15:21:44 2024 +1000 Merge branch 'strings-squashed' of https://github.com/oxen-io/session-android into strings-squashed commitd35482daba
Author: ThomasSession <thomas.r@getsession.org> Date: Thu Aug 29 15:20:13 2024 +1000 More bold fixes and UI tweaks commit78a9ab7159
Author: ThomasSession <thomas.r@getsession.org> Date: Thu Aug 29 14:03:41 2024 +1000 Making sure we bold appropriately commit1cec477020
Author: alansley <aclansley@gmail.com> Date: Thu Aug 29 13:33:50 2024 +1000 Made call to 'getQuantityString' pass the count twice because otherwise it doesn't work correctly commit8e80ab08a9
Author: ThomasSession <thomas.r@getsession.org> Date: Thu Aug 29 13:28:54 2024 +1000 Using the existing implementation commitcb9554ab38
Author: alansley <aclansley@gmail.com> Date: Thu Aug 29 12:32:30 2024 +1000 Merge CrowdIn strings circa 2024-08-29 commitdd57da70f6
Author: alansley <aclansley@gmail.com> Date: Thu Aug 29 09:06:22 2024 +1000 Updated Phrase usage in ConversationAdapter commit34b15d7865
Author: alansley <aclansley@gmail.com> Date: Thu Aug 29 09:03:55 2024 +1000 Converted TransferControlView into Kotlin and updated Phrase usage commita35a7a6a96
Author: alansley <aclansley@gmail.com> Date: Thu Aug 29 08:55:16 2024 +1000 Converted MessageReceipientNotificationBuilder to Kotlin & updated Phrase usage commit6dd93b33f2
Author: alansley <aclansley@gmail.com> Date: Thu Aug 29 08:25:24 2024 +1000 Update MuteDialog, LinkPreviewDialog, and PathActivity commite7dd1c582d
Author: alansley <aclansley@gmail.com> Date: Thu Aug 29 08:16:09 2024 +1000 Updated DisappearingMessages.kt and HelpSettingsActivity.kt commit5bd55ea993
Author: alansley <aclansley@gmail.com> Date: Thu Aug 29 08:01:30 2024 +1000 Converted SwitchPreferenceCompat to Kotlin and fixed the BlockedDialog using the joinCommunity string for some bizarre reason commitd3fb440d05
Author: alansley <aclansley@gmail.com> Date: Thu Aug 29 07:15:03 2024 +1000 Removed R.string.gif and replaced with a string constant commitace58e3493
Author: alansley <aclansley@gmail.com> Date: Thu Aug 29 07:11:53 2024 +1000 getSubbedString correction commit2a8f010369
Merge:ce8efd7def
116bef3c71
Author: alansley <aclansley@gmail.com> Date: Wed Aug 28 16:31:43 2024 +1000 Merge branch 'compose-open-url-dialog' into strings-squashed commitce8efd7def
Author: alansley <aclansley@gmail.com> Date: Wed Aug 28 16:31:11 2024 +1000 WIP commit114066ad5f
Author: alansley <aclansley@gmail.com> Date: Wed Aug 28 15:30:02 2024 +1000 Push before changing over all the Phrase.from to extension method calls commit116bef3c71
Author: ThomasSession <thomas.r@getsession.org> Date: Wed Aug 28 15:25:03 2024 +1000 For safety commit0b1a71a582
Author: ThomasSession <thomas.r@getsession.org> Date: Wed Aug 28 15:23:02 2024 +1000 Cleaning other use of old url dialog commit20abbebf4a
Author: ThomasSession <thomas.r@getsession.org> Date: Wed Aug 28 15:19:46 2024 +1000 Forgot !! commit25132c6342
Author: ThomasSession <thomas.r@getsession.org> Date: Wed Aug 28 15:13:58 2024 +1000 Proper set up for the Open URL dialog commit1f68791da9
Author: alansley <aclansley@gmail.com> Date: Wed Aug 28 14:35:05 2024 +1000 Replaced placeholder text with new string commit8d97f31b4d
Author: alansley <aclansley@gmail.com> Date: Wed Aug 28 14:31:52 2024 +1000 Adjusted comment commitdfebe6f3f9
Author: alansley <aclansley@gmail.com> Date: Wed Aug 28 14:25:23 2024 +1000 Moved block/unblock string selection logic into ViewModel and fixed a comment commit736b5313e6
Author: alansley <aclansley@gmail.com> Date: Wed Aug 28 14:02:54 2024 +1000 Changed toast to warning - although condition to trigger should not be possible commit413bc0be4b
Author: alansley <aclansley@gmail.com> Date: Wed Aug 28 13:55:04 2024 +1000 Adjusted EditGroupMembers to match iOS and fixed up save attachment commentary / logic commitae7164ecbb
Merge:5df981bc7a
d1c4283f42
Author: alansley <aclansley@gmail.com> Date: Wed Aug 28 09:51:58 2024 +1000 Merge branch 'dev' into strings-squashed commit2aa58f4dd6
Author: alansley <aclansley@gmail.com> Date: Wed Aug 28 08:27:03 2024 +1000 WIP compose openURL dialog commit5df981bc7a
Author: alansley <aclansley@gmail.com> Date: Tue Aug 27 15:51:38 2024 +1000 Adjusted NotificationRadioButton that takes string IDs to act as a pass-through commit96453f1f1e
Author: alansley <aclansley@gmail.com> Date: Tue Aug 27 15:42:33 2024 +1000 Added some TODO markers for tomorrow commita402a1be79
Author: alansley <aclansley@gmail.com> Date: Tue Aug 27 15:33:55 2024 +1000 Adjusted Landing page string substitutions to cater for emojis commit4809b5444b
Author: alansley <aclansley@gmail.com> Date: Tue Aug 27 15:12:39 2024 +1000 Removed unused 'isEmpty' utility methods commitb52048a080
Author: alansley <aclansley@gmail.com> Date: Tue Aug 27 14:42:57 2024 +1000 Addressed many aspects of PR feedback + misc. strings issues commit9cdbc4b80b
Author: alansley <aclansley@gmail.com> Date: Tue Aug 27 09:50:51 2024 +1000 Adjusted strings as per Rebecca's 'String Changes' spreadsheet commit4d7e4b9e2c
Merge:3c576053a3
1393335121
Author: alansley <aclansley@gmail.com> Date: Tue Aug 27 08:19:53 2024 +1000 Merge branch 'dev' into strings-squashed commit3c576053a3
Author: alansley <aclansley@gmail.com> Date: Mon Aug 26 17:11:45 2024 +1000 Moved into libsession for ease of access to control message view creation commitb908a54a44
Merge:404fb8001c
bfbe4a8fd2
Author: alansley <aclansley@gmail.com> Date: Mon Aug 26 11:54:09 2024 +1000 Merge branch 'dev' into strings-squashed commit404fb8001c
Author: alansley <aclansley@gmail.com> Date: Mon Aug 26 11:52:41 2024 +1000 Performed a PR pass to fix up anything obvious - there's still a few things left TODO commit53978f818d
Author: Al Lansley <al@oxen.io> Date: Fri Aug 23 14:13:11 2024 +1000 Cleaned up HomeActivityTests.kt commit5f82571bef
Merge:69b8bd7396
8deb21c0c6
Author: Al Lansley <al@oxen.io> Date: Fri Aug 23 08:59:21 2024 +1000 Merge branch 'dev' into strings-squashed commit69b8bd7396
Author: alansley <aclansley@gmail.com> Date: Thu Aug 22 16:20:17 2024 +1000 Added back app_name string so app names properly, fixed API 28 save issue, made some buttons display as red if they should commite3cab9c0d9
Author: alansley <aclansley@gmail.com> Date: Thu Aug 22 14:26:48 2024 +1000 SS-75 Prevented ScrollView vertical scroll bar from fading out commitb0b835092d
Author: alansley <aclansley@gmail.com> Date: Thu Aug 22 14:07:49 2024 +1000 SS-64 Removed all 'Unblocked {name}' toasts as per instructions commitc3c35de408
Merge:efc2ee2824
8e10e1abf4
Author: alansley <aclansley@gmail.com> Date: Thu Aug 22 13:43:00 2024 +1000 Merge branch 'dev' into strings-squashed commitefc2ee2824
Author: alansley <aclansley@gmail.com> Date: Thu Aug 22 13:40:59 2024 +1000 Added some comments about the new CrowdIn strings commit7a03fb37ef
Author: alansley <aclansley@gmail.com> Date: Thu Aug 22 13:08:03 2024 +1000 Initial integration of CrowdIn strings (English only) commit9766c3fd0b
Author: alansley <aclansley@gmail.com> Date: Thu Aug 22 09:55:14 2024 +1000 SS-75 Added 'Copied' toast when the user copies a URL in the Open URL dialog commit59b4805b8b
Author: alansley <aclansley@gmail.com> Date: Thu Aug 22 09:51:01 2024 +1000 SS-75 Prevent 'Are you sure you want to open this URL?' dialog from being excessively tall when given a very long URL commitb7f627f03c
Author: alansley <aclansley@gmail.com> Date: Wed Aug 21 14:54:17 2024 +1000 Made closed group deleting-someone-elses msgs use 'Delete message' or 'Delete Messages' appropriately commit69f6818f99
Author: alansley <aclansley@gmail.com> Date: Wed Aug 21 13:53:58 2024 +1000 Adjusted SS-64 so that all Block / Unblock buttons now use that text and are displayed in red commit2192c2c007
Merge:2338bb47ca
eea54d1a17
Author: alansley <aclansley@gmail.com> Date: Wed Aug 21 13:28:16 2024 +1000 Merge branch 'dev' into strings-squashed commit2338bb47ca
Author: alansley <aclansley@gmail.com> Date: Tue Aug 20 19:11:40 2024 +1000 Converted DefaultMessageNotifier to Kotlin because it needs adjustment & that Java is nasty commit6b29e4d8ce
Author: alansley <aclansley@gmail.com> Date: Tue Aug 20 17:53:27 2024 +1000 Added a note about the plurals for search results commitf7748a0c05
Author: alansley <aclansley@gmail.com> Date: Tue Aug 20 16:06:24 2024 +1000 Corrected text on storage permission dialog commitf6b6256598
Author: alansley <aclansley@gmail.com> Date: Tue Aug 20 14:44:25 2024 +1000 Minor cleanup of BlockedContactsActivity commite3d4870d81
Author: alansley <aclansley@gmail.com> Date: Tue Aug 20 14:41:14 2024 +1000 Addressed changes to fix SS-64 / QA-146 - unblocking contacts modal & toast adjustments commite812527358
Merge:5e02e1ef5c
9919f716a7
Author: alansley <aclansley@gmail.com> Date: Tue Aug 20 13:27:35 2024 +1000 Merge branch 'dev' into strings-squashed commit5e02e1ef5c
Author: alansley <aclansley@gmail.com> Date: Tue Aug 20 09:39:16 2024 +1000 Added 'NonTranslatableStringConstants' file commit816f21bb29
Author: alansley <aclansley@gmail.com> Date: Tue Aug 20 09:30:30 2024 +1000 Addressed commit feedback & removed desktop string 'attachmentsClickToDownload' as we use 'attachmentsTapToDownload' commitacc8d47c68
Author: Al Lansley <al@oxen.io> Date: Mon Aug 19 16:22:08 2024 +1000 SES-1571 Large messages show warning toast commit27ca77d5c4
Merge:27bc90bf1f
f379604c54
Author: Al Lansley <al@oxen.io> Date: Mon Aug 19 11:19:27 2024 +1000 Merge branch 'dev' into strings-squashed commit27bc90bf1f
Author: Al Lansley <al@oxen.io> Date: Mon Aug 19 08:59:38 2024 +1000 Cleaned up some comments and content description commit558684a56d
Merge:90d7064c18
93a28906fb
Author: Al Lansley <al@oxen.io> Date: Mon Aug 19 08:41:47 2024 +1000 Merge branch 'dev' into strings-squashed commit90d7064c18
Author: Al Lansley <al@oxen.io> Date: Thu Aug 15 12:13:30 2024 +1000 Fixed issue where new closed groups would display a timestamp instead of the 'groupNoMessages' text commit51ef0ec81c
Author: Al Lansley <al@oxen.io> Date: Thu Aug 15 09:45:28 2024 +1000 Replaced string 'CreateProfileActivity_profile_photo' with the string 'photo' which has the same text ('Photo') commiteecce08c25
Merge:01009cf521
5a248da445
Author: Al Lansley <al@oxen.io> Date: Thu Aug 15 09:38:10 2024 +1000 Merge branch 'dev' into strings-squashed commit01009cf521
Author: Al Lansley <al@oxen.io> Date: Thu Aug 15 08:37:19 2024 +1000 Changed allowed emoji reactions per minute from 5 (which I used for testing) to 20 (production) commit9441d1e08d
Author: Al Lansley <al@oxen.io> Date: Thu Aug 15 08:34:16 2024 +1000 Refactored emoji rate limiter to use a timestamp mechanism rather than removing queue items after a delay commit6cd6cc3e26
Author: alansley <aclansley@gmail.com> Date: Wed Aug 14 16:48:07 2024 +1000 Adjusted emoji rate limit to 20 reactions per minute to match acceptance criteria commitedd154d8e1
Author: alansley <aclansley@gmail.com> Date: Wed Aug 14 16:02:16 2024 +1000 SS-78 / SES-199 Mechanism required to limit emoji reaction rate commita8ee5c9f3b
Author: alansley <aclansley@gmail.com> Date: Wed Aug 14 14:51:40 2024 +1000 Replaced hard-coded 'Session' with '{app_name}' in 'callsSessionCall' commit621094ebe4
Author: alansley <aclansley@gmail.com> Date: Wed Aug 14 13:40:01 2024 +1000 SS-72 Update save attachment models + add one-time warning that other apps can access saved attachments commit0c83606539
Author: alansley <aclansley@gmail.com> Date: Tue Aug 13 15:50:35 2024 +1000 SS-75 Open URL modal change commit802cf19598
Author: Al Lansley <al@oxen.io> Date: Mon Aug 12 16:42:15 2024 +1000 Open or copy URL WIP commitea84aa1478
Author: Al Lansley <al@oxen.io> Date: Mon Aug 12 14:17:04 2024 +1000 Tied in bandDeleteAll string commit93b8e74f2d
Author: Al Lansley <al@oxen.io> Date: Mon Aug 12 11:34:03 2024 +1000 Job done! All Accessibility ID strings mapped and/or dealt with appropriately! commitfc3b4ad367
Author: Al Lansley <al@oxen.io> Date: Mon Aug 12 09:49:57 2024 +1000 Further AccessibilityId mapping & fixed group members counts to display correct details commit558d6741b1
Author: alansley <aclansley@gmail.com> Date: Fri Aug 9 17:24:44 2024 +1000 End of day push commit73fdb16214
Author: alansley <aclansley@gmail.com> Date: Fri Aug 9 15:57:06 2024 +1000 Localised time strings working - even if the unit tests aren't commit436175d146
Author: alansley <aclansley@gmail.com> Date: Fri Aug 9 13:54:09 2024 +1000 Relative time string WIP commitf309263e39
Merge:45c4118d52
007e705cd9
Author: alansley <aclansley@gmail.com> Date: Fri Aug 9 11:39:13 2024 +1000 Merge dev commit45c4118d52
Author: Al Lansley <al@oxen.io> Date: Thu Aug 8 16:43:02 2024 +1000 Further AccessibilityId mapping WIP commit31bac8e30e
Author: Al Lansley <al@oxen.io> Date: Thu Aug 8 10:53:30 2024 +1000 Further accessibility ID changes & removed fragment_new_conversation_home.xml commit9c2111e66e
Author: alansley <aclansley@gmail.com> Date: Wed Aug 7 13:13:52 2024 +1000 AccessibilityId WIP commit1e9eeff86a
Author: alansley <aclansley@gmail.com> Date: Wed Aug 7 11:06:39 2024 +1000 AccessibilityId adjustments & removed some unused XML layouts commite5fd2c8cc0
Author: alansley <aclansley@gmail.com> Date: Wed Aug 7 09:22:14 2024 +1000 AccessibilityId refactor WIP commit399796bac3
Author: alansley <aclansley@gmail.com> Date: Tue Aug 6 15:51:53 2024 +1000 AccessibilityId WIP - up to AccessibilityId_reveal_recovery_phrase_button commita8d72dfcc0
Author: alansley <aclansley@gmail.com> Date: Tue Aug 6 14:12:10 2024 +1000 Cleaned up a few comments and fixed some plurals logic commitbe400d8f4f
Author: alansley <aclansley@gmail.com> Date: Tue Aug 6 11:32:08 2024 +1000 Removed commented out merge conflict marker commit5cbe289a8d
Merge:5fe123e7b5
d6c5ab2b18
Author: alansley <aclansley@gmail.com> Date: Tue Aug 6 11:30:50 2024 +1000 Merge dev and cleanup commit5fe123e7b5
Author: Al Lansley <al@oxen.io> Date: Mon Aug 5 14:37:47 2024 +1000 Adjusted sending of mms messages to show 'Uploading' rather than 'Sending' as per SES-1721 commitd3f8e928b6
Merge:00552930e6
cd1a0643e3
Author: Al Lansley <al@oxen.io> Date: Mon Aug 5 13:30:03 2024 +1000 Merge branch 'dev' into strings-squashed commit00552930e6
Author: Al Lansley <al@oxen.io> Date: Mon Aug 5 13:28:55 2024 +1000 Removed unused helpReportABugDesktop strings commit6c0450b487
Author: Al Lansley <al@oxen.io> Date: Mon Aug 5 12:59:15 2024 +1000 Renamed 'quitButton' string to just 'quit' commit284c485903
Author: Al Lansley <al@oxen.io> Date: Mon Aug 5 12:00:35 2024 +1000 Replaced 'screenSecurity' with 'screenshotNotifications' as the title of the notifications toggle commit6948d64fa8
Author: Al Lansley <al@oxen.io> Date: Mon Aug 5 10:45:05 2024 +1000 WIP commitbc94cb78db
Author: alansley <aclansley@gmail.com> Date: Fri Aug 2 16:21:16 2024 +1000 End of day push commit1a2df3798a
Merge:c7fdb6aed9
a56e1d0b91
Author: alansley <aclansley@gmail.com> Date: Fri Aug 2 15:20:19 2024 +1000 Merged dev commitc7fdb6aed9
Author: alansley <aclansley@gmail.com> Date: Fri Aug 2 14:21:11 2024 +1000 Replaced string 'dialog_disappearing_messages_follow_setting_confirm' with 'confirm' commit2992d590d9
Author: alansley <aclansley@gmail.com> Date: Fri Aug 2 14:01:00 2024 +1000 Removed string 'attachment_type_selector__gallery' and associated / un-used 'attachment_type_selector.xml' layout commit4218663c95
Author: alansley <aclansley@gmail.com> Date: Fri Aug 2 13:39:54 2024 +1000 Removed 'message_details_header__disappears' and the unused 'activity_message_detail.xml' which was the only reference to it commitba2d0275e4
Author: alansley <aclansley@gmail.com> Date: Fri Aug 2 12:15:42 2024 +1000 Implemented task SS-79 to only provide a save attachment menu option when the attachment download is complete commit20662c8222
Merge:608c984a6b
fbbef4898a
Author: alansley <aclansley@gmail.com> Date: Wed Jul 31 13:08:04 2024 +1000 Merge branch 'dev' into strings-squashed commit608c984a6b
Author: alansley <aclansley@gmail.com> Date: Tue Jul 30 16:58:08 2024 +1000 Actually remove the 4 specific time period mute strings commit006a4e8bad
Author: alansley <aclansley@gmail.com> Date: Tue Jul 30 16:43:54 2024 +1000 Cleaned up MuteDialog.kt commitd3177f9f1a
Author: alansley <aclansley@gmail.com> Date: Tue Jul 30 16:27:06 2024 +1000 Added a 1 second kludge to the mute for subtitle so that it initially shows 1 hour not 59 minutes etc. commitd568a86649
Author: alansley <aclansley@gmail.com> Date: Tue Jul 30 16:20:20 2024 +1000 Removed 'Muted for' strings and fixed it up to use 'Mute for {large_time_unit}' across the board commit84f6f19cf4
Author: alansley <aclansley@gmail.com> Date: Tue Jul 30 11:03:46 2024 +1000 Changed some hard-coded 'Session' text in strings and renamed another commitbc90d18c91
Author: alansley <aclansley@gmail.com> Date: Tue Jul 30 10:27:55 2024 +1000 Cleaned up a leftover plural & changed 'app_name' to use 'sessionMessenger' string commit79cd87878c
Merge:3b62e474b3
dec02cef5a
Author: alansley <aclansley@gmail.com> Date: Tue Jul 30 08:16:02 2024 +1000 Merge branch 'dev' into strings-squashed commit3b62e474b3
Author: Al Lansley <al@oxen.io> Date: Mon Jul 29 16:33:21 2024 +1000 Down to just the final few straggler strings commit13e81f046b
Author: Al Lansley <al@oxen.io> Date: Mon Jul 29 13:13:54 2024 +1000 WIP commit2d9961d5c0
Author: Al Lansley <al@oxen.io> Date: Mon Jul 29 08:58:01 2024 +1000 Further cleanup of stragglers commit08b8a84309
Author: Al Lansley <al@oxen.io> Date: Mon Jul 29 08:29:12 2024 +1000 Cleaning up straggler strings commitd0e87c64b5
Author: alansley <aclansley@gmail.com> Date: Fri Jul 26 17:07:46 2024 +1000 WIP commit4bc9d09be2
Author: alansley <aclansley@gmail.com> Date: Fri Jul 26 16:30:28 2024 +1000 WIP commit3cee4bc12f
Merge:aa1db13e3a
a495ec232a
Author: alansley <aclansley@gmail.com> Date: Fri Jul 26 13:57:09 2024 +1000 Removed some legacy strings & substituted others commitaa1db13e3a
Author: fanchao <git@fanchao.dev> Date: Fri Jul 26 11:34:05 2024 +1000 Initial squash merge for strings
This commit is contained in:
@@ -11,6 +11,22 @@ android {
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion androidMinimumSdkVersion
|
||||
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
|
||||
// The following argument makes the Android Test Orchestrator run its
|
||||
// "pm clear" command after each test invocation. This command ensures
|
||||
// that the app's state is completely cleared between tests.
|
||||
testInstrumentationRunnerArguments clearPackageData: 'true'
|
||||
testOptions {
|
||||
execution 'ANDROIDX_TEST_ORCHESTRATOR'
|
||||
}
|
||||
|
||||
sourceSets {
|
||||
test {
|
||||
java.srcDirs = ['src/AndroidTest/java/org/session/libsession']
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
@@ -50,11 +66,16 @@ dependencies {
|
||||
implementation "com.fasterxml.jackson.core:jackson-databind:$jacksonDatabindVersion"
|
||||
implementation "com.github.oxen-io.session-android-curve-25519:curve25519-java:$curve25519Version"
|
||||
implementation "com.squareup.okhttp3:okhttp:$okhttpVersion"
|
||||
implementation "com.squareup.phrase:phrase:$phraseVersion"
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
|
||||
implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion"
|
||||
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutinesVersion"
|
||||
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:$kotlinxJsonVersion"
|
||||
implementation "nl.komponents.kovenant:kovenant:$kovenantVersion"
|
||||
|
||||
// Note: kotlinx-datetime:0.6.0 is the latest version as of 2024/08/09 -AL
|
||||
implementation 'org.jetbrains.kotlinx:kotlinx-datetime:0.6.0'
|
||||
|
||||
testImplementation "junit:junit:$junitVersion"
|
||||
testImplementation 'org.assertj:assertj-core:3.11.1'
|
||||
testImplementation "org.mockito:mockito-inline:4.11.0"
|
||||
|
@@ -1,24 +0,0 @@
|
||||
package org.session.libsession
|
||||
|
||||
import androidx.test.platform.app.InstrumentationRegistry
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
|
||||
import org.junit.Assert.*
|
||||
|
||||
/**
|
||||
* Instrumented test, which will execute on an Android device.
|
||||
*
|
||||
* See [testing documentation](http://d.android.com/tools/testing).
|
||||
*/
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class ExampleInstrumentedTest {
|
||||
@Test
|
||||
fun useAppContext() {
|
||||
// Context of the app under test.
|
||||
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
|
||||
assertEquals("org.session.libsession.test", appContext.packageName)
|
||||
}
|
||||
}
|
@@ -0,0 +1,414 @@
|
||||
package org.session.libsession
|
||||
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||
import androidx.test.platform.app.InstrumentationRegistry
|
||||
import java.util.Locale
|
||||
import junit.framework.TestCase
|
||||
import kotlin.time.Duration.Companion.days
|
||||
import kotlin.time.Duration.Companion.hours
|
||||
import kotlin.time.Duration.Companion.minutes
|
||||
import kotlin.time.Duration.Companion.seconds
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.session.libsession.LocalisedTimeUtil.toShortTwoPartString
|
||||
import org.session.libsignal.utilities.Log
|
||||
|
||||
import android.text.format.DateUtils
|
||||
import kotlin.math.abs
|
||||
|
||||
|
||||
/**
|
||||
* Instrumented test, which will execute on an Android device.
|
||||
*
|
||||
* See [testing documentation](http://d.android.com/tools/testing).
|
||||
*/
|
||||
@RunWith(AndroidJUnit4::class)
|
||||
class LocalisedTimeStringTests {
|
||||
private val TAG = "LocalisedTimeStringsTest"
|
||||
|
||||
// Whether or not to print debug info during the test - can be useful
|
||||
private val printDebug = true
|
||||
|
||||
val context = InstrumentationRegistry.getInstrumentation().targetContext.applicationContext
|
||||
|
||||
// Test durations
|
||||
private val oneSecond = 1.seconds
|
||||
private val twoSeconds = 2.seconds
|
||||
private val oneMinute = 1.minutes
|
||||
private val twoMinutes = 2.minutes
|
||||
private val oneHour = 1.hours
|
||||
private val twoHours = 2.hours
|
||||
private val oneDay = 1.days
|
||||
private val twoDays = 2.days
|
||||
private val oneDaySevenHours = 1.days.plus(7.hours)
|
||||
private val fourDaysTwentyThreeHours = 4.days.plus(23.hours)
|
||||
private val oneWeekTwoDays = 9.days
|
||||
private val twoWeekTwoDays = 16.days
|
||||
|
||||
// List of the above for each loop-based comparisons
|
||||
private val allDurations = listOf(
|
||||
oneSecond,
|
||||
twoSeconds,
|
||||
oneMinute,
|
||||
twoMinutes,
|
||||
oneHour,
|
||||
twoHours,
|
||||
oneDay,
|
||||
twoDays,
|
||||
oneDaySevenHours,
|
||||
fourDaysTwentyThreeHours,
|
||||
oneWeekTwoDays,
|
||||
twoWeekTwoDays
|
||||
)
|
||||
|
||||
// Method to get the localised time as the single largest time unit in the duration, e.g.,
|
||||
// - 90.minutes -> 1 hour
|
||||
// - 30.hours -> 1 day
|
||||
// - 170.hours -> 1 week
|
||||
private fun performSingleTimeUnitStringComparison(expectedOutputsList: List<String>) {
|
||||
for (i in 0 until allDurations.count()) {
|
||||
var txt = LocalisedTimeUtil.getDurationWithSingleLargestTimeUnit(context, allDurations[i])
|
||||
if (printDebug) println("$i: Single time unit - expected: ${expectedOutputsList[i]} - got: $txt")
|
||||
TestCase.assertEquals(expectedOutputsList[i], txt)
|
||||
}
|
||||
}
|
||||
|
||||
// Method to get the localised time as the two largest time units in the duration, e.g.,
|
||||
// - 90.minutes -> 1 hour 30 minutes
|
||||
// - 30.hours -> 1 day 6 hours
|
||||
// - 170.hours -> 1 week 0 days
|
||||
private fun performDualTimeUnitStringComparison(expectedOutputsList: List<String>) {
|
||||
for (i in 0 until allDurations.count()) {
|
||||
val txt = LocalisedTimeUtil.getDurationWithDualTimeUnits(context, allDurations[i])
|
||||
if (printDebug) println("$i: Dual time units - expected: ${expectedOutputsList[i]} - got: $txt")
|
||||
TestCase.assertEquals(expectedOutputsList[i], txt)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testShortTimeDurations() {
|
||||
// Non-localised short time descriptions. Note: We never localise shortened durations like these.
|
||||
val shortTimeDescriptions = listOf(
|
||||
"0m 1s",
|
||||
"0m 2s",
|
||||
"1m 0s",
|
||||
"2m 0s",
|
||||
"1h 0m",
|
||||
"2h 0m",
|
||||
"1d 0h",
|
||||
"2d 0h",
|
||||
"1d 7h",
|
||||
"4d 23h",
|
||||
"1w 2d",
|
||||
"2w 2d"
|
||||
)
|
||||
|
||||
for (i in 0 until shortTimeDescriptions.count()) {
|
||||
val txt = allDurations[i].toShortTwoPartString()
|
||||
if (printDebug) println("Short time strings - expected: ${shortTimeDescriptions[i]} - got: $txt")
|
||||
TestCase.assertEquals(shortTimeDescriptions[i], txt)
|
||||
}
|
||||
}
|
||||
|
||||
fun getRelativeTimeLocalized(timestampMS: Long): String {
|
||||
// Get the current system time
|
||||
val nowMS = System.currentTimeMillis()
|
||||
|
||||
// Calculate the time difference in milliseconds - this value will be negative if it's in the
|
||||
// future or positive if it's in the past.
|
||||
val timeDifferenceMS = nowMS - timestampMS
|
||||
|
||||
// Choose a desired time resolution based on the time difference.
|
||||
// Note: We do this against the absolute time difference so this function can still work for
|
||||
// both future/past times without having separate future/past cases.
|
||||
val desiredResolution = when (abs(timeDifferenceMS)) {
|
||||
in 0..DateUtils.MINUTE_IN_MILLIS -> DateUtils.SECOND_IN_MILLIS
|
||||
in DateUtils.MINUTE_IN_MILLIS..DateUtils.HOUR_IN_MILLIS -> DateUtils.MINUTE_IN_MILLIS
|
||||
in DateUtils.HOUR_IN_MILLIS..DateUtils.DAY_IN_MILLIS -> DateUtils.HOUR_IN_MILLIS
|
||||
in DateUtils.DAY_IN_MILLIS..DateUtils.WEEK_IN_MILLIS -> DateUtils.DAY_IN_MILLIS
|
||||
|
||||
// We don't do months or years, so if the result is 53 weeks then so be it - also, the
|
||||
// getRelativeTimeSpanString method's resolution maxes out at weeks!
|
||||
else -> DateUtils.WEEK_IN_MILLIS
|
||||
}
|
||||
|
||||
// Get the system locale
|
||||
val locale = Locale.getDefault()
|
||||
|
||||
// Use DateUtils to get the relative time span string
|
||||
return DateUtils.getRelativeTimeSpanString(
|
||||
timestampMS,
|
||||
nowMS,
|
||||
desiredResolution,
|
||||
DateUtils.FORMAT_SHOW_DATE or DateUtils.FORMAT_ABBREV_RELATIVE // Try this w/ just FORMAT_ABBREV_RELATIVE
|
||||
).toString()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testSystemGeneratedRelativeTimes() {
|
||||
var t = 0L
|
||||
|
||||
// 1 and 2 seconds ago
|
||||
t = System.currentTimeMillis() - 1.seconds.inWholeMilliseconds
|
||||
print(getRelativeTimeLocalized(t))
|
||||
t = System.currentTimeMillis() - 2.seconds.inWholeMilliseconds
|
||||
print(getRelativeTimeLocalized(t))
|
||||
|
||||
// 1 and 2 minutes ago
|
||||
t = System.currentTimeMillis() - 1.minutes.inWholeMilliseconds
|
||||
print(getRelativeTimeLocalized(t))
|
||||
t = System.currentTimeMillis() - 2.minutes.inWholeMilliseconds
|
||||
print(getRelativeTimeLocalized(t))
|
||||
|
||||
// 1 and 2 hours ago
|
||||
t = System.currentTimeMillis() - 1.hours.inWholeMilliseconds
|
||||
print(getRelativeTimeLocalized(t))
|
||||
t = System.currentTimeMillis() - 2.hours.inWholeMilliseconds
|
||||
print(getRelativeTimeLocalized(t))
|
||||
|
||||
assert(true)
|
||||
}
|
||||
|
||||
// Unit test for durations in the English language. Note: We can pre-load the time-units string
|
||||
// map via `LocalisedTimeUtil.loadTimeStringMap`, or alternatively they'll get loaded for the
|
||||
// current context / locale on first use.
|
||||
@Test
|
||||
fun timeSpanStrings_EN() {
|
||||
// Expected single largest time unit outputs for English
|
||||
// Note: For all single largest time unit durations we may discard smaller time unit information as appropriate.
|
||||
val expectedOutputsSingleEN = listOf(
|
||||
"1 second", // 1 second
|
||||
"2 seconds", // 2 seconds
|
||||
"1 minute", // 1 minute
|
||||
"2 minutes", // 2 minutes
|
||||
"1 hour", // 1 hour
|
||||
"2 hours", // 2 hours
|
||||
"1 day", // 1 day
|
||||
"2 days", // 2 days
|
||||
"1 day", // 1 day 7 hours as single unit is: 1 day
|
||||
"4 days", // 4 days 23 hours as single unit is: 4 days
|
||||
"1 week", // 1 week 2 days as single unit is: 1 week
|
||||
"2 weeks" // 2 weeks 2 days as single unit is: 2 weeks
|
||||
)
|
||||
|
||||
// Expected dual largest time unit outputs for English
|
||||
val expectedOutputsDualEN = listOf(
|
||||
"0 minutes 1 second", // 1 second
|
||||
"0 minutes 2 seconds", // 2 seconds
|
||||
"1 minute 0 seconds", // 1 minute
|
||||
"2 minutes 0 seconds", // 2 minutes
|
||||
"1 hour 0 minutes", // 1 hour
|
||||
"2 hours 0 minutes", // 2 hours
|
||||
"1 day 0 hours", // 1 day
|
||||
"2 days 0 hours", // 2 days
|
||||
"1 day 7 hours", // 1 day 7 hours
|
||||
"4 days 23 hours", // 4 days 23 hours
|
||||
"1 week 2 days", // 1 week 2 days
|
||||
"2 weeks 2 days" // 2 weeks 2 days
|
||||
)
|
||||
|
||||
Locale.setDefault(Locale.ENGLISH)
|
||||
if (printDebug) Log.w(TAG, "EN tests - current locale is: " + Locale.getDefault())
|
||||
performSingleTimeUnitStringComparison(expectedOutputsSingleEN)
|
||||
performDualTimeUnitStringComparison(expectedOutputsDualEN)
|
||||
}
|
||||
|
||||
// Unit test for durations in the French language
|
||||
@Test
|
||||
fun timeSpanStrings_FR() {
|
||||
// Expected single largest time unit outputs for French
|
||||
val expectedOutputsSingle_FR = listOf(
|
||||
"1 seconde", // 1 second
|
||||
"2 secondes", // 2 seconds
|
||||
"1 minute", // 1 minute
|
||||
"2 minutes", // 2 minutes
|
||||
"1 heure", // 1 hour
|
||||
"2 heures", // 2 hours
|
||||
"1 jour", // 1 day
|
||||
"2 jours", // 2 days
|
||||
"1 jour", // 1 day 7 hours as single unit is: 1 day
|
||||
"4 jours", // 4 days 23 hours as single unit is: 4 days
|
||||
"1 semaine", // 1 week 2 days as single unit is: 1 week
|
||||
"2 semaines" // 2 weeks 2 days as single unit is: 2 weeks
|
||||
)
|
||||
|
||||
// Expected dual largest time unit outputs for French
|
||||
val expectedOutputsDual_FR = listOf(
|
||||
"0 minutes 1 seconde", // 1 second
|
||||
"0 minutes 2 secondes", // 2 seconds
|
||||
"1 minute 0 secondes", // 1 minute
|
||||
"2 minutes 0 secondes", // 2 minutes
|
||||
"1 heure 0 minutes", // 1 hour
|
||||
"2 heures 0 minutes", // 2 hours
|
||||
"1 jour 0 heures", // 1 day
|
||||
"2 jours 0 heures", // 2 days
|
||||
"1 jour 7 heures", // 1 day 7 hours
|
||||
"4 jours 23 heures", // 4 days 23 hours
|
||||
"1 semaine 2 jours", // 1 week 2 days
|
||||
"2 semaines 2 jours" // 2 weeks 2 days
|
||||
)
|
||||
|
||||
Locale.setDefault(Locale.FRENCH)
|
||||
if (printDebug) Log.w(TAG, "FR tests - current locale is: " + Locale.getDefault())
|
||||
performSingleTimeUnitStringComparison(expectedOutputsSingle_FR)
|
||||
performDualTimeUnitStringComparison(expectedOutputsDual_FR)
|
||||
}
|
||||
|
||||
// Method to reverse the order of words in a string, separating on spaces.
|
||||
// It is genuinely easier to do this with the RTL strings that fight through the chaos that is
|
||||
// trying to use a mixed LTR/RTL mode in Android Studio, which is quite frankly a nightmare.
|
||||
//
|
||||
// Also: If you find yourself fighting with RTL stuff you can disable it in the Android Studio
|
||||
// editor by finding your `idea.properties` file and adding the line `editor.disable.rtl=true`
|
||||
// My file was at: ~/.local/share/JetBrains/Toolbox/apps/android-studio-2/bin/idea.properties
|
||||
private fun String.reverseWordOrder(): String {
|
||||
return this.split(" ").reversed().joinToString(" ")
|
||||
}
|
||||
|
||||
// Unit test for durations in the Arabic language
|
||||
@Test
|
||||
fun timeSpanStrings_AR() {
|
||||
// Expected single largest time unit outputs for Arabic.
|
||||
//
|
||||
// Note: As Arabic is a Right-to-Left language the number goes on the right!
|
||||
//
|
||||
// Also: This is not a PERFECT mapping to the correct time unit plural phrasings for Arabic
|
||||
// because they have six separate time units based on 0, 1..2, 3..9, 11.12, 21..99, as well
|
||||
// as round values of 10 in the range 10..90 (i.e., 10, 20, 30, ..., 80, 90). Our custom
|
||||
// time unit phrases only handle singular & plural - so we're not going to be perfect, but
|
||||
// we'll be good enough to get our point across, like if you said to me "See you in 3 day"
|
||||
// I'd know that you means "See you in 3 dayS".
|
||||
// Further reading: https://www.fluentarabic.net/numbers-in-arabic/
|
||||
val expectedOutputsSingleAR = listOf(
|
||||
"1 ثانية".reverseWordOrder(), // 1 second
|
||||
"2 ثانية".reverseWordOrder(), // 2 seconds
|
||||
"1 دقيقة".reverseWordOrder(), // 1 minute
|
||||
"2 دقائق".reverseWordOrder(), // 2 minutes
|
||||
"1 ساعة".reverseWordOrder(), // 1 hour
|
||||
"2 ساعات".reverseWordOrder(), // 2 hours
|
||||
"1 يوم".reverseWordOrder(), // 1 day
|
||||
"2 أيام".reverseWordOrder(), // 2 days
|
||||
"1 يوم".reverseWordOrder(), // 1 day 7 hours as single unit (1 day)
|
||||
"4 أيام".reverseWordOrder(), // 4 days 23 hours as single unit (4 days)
|
||||
"1 أسبوع".reverseWordOrder(), // 1 week 2 days as single unit (1 week)
|
||||
"2 أسابيع".reverseWordOrder() // 2 weeks 2 days as single unit (2 weeks)
|
||||
)
|
||||
|
||||
// Arabic dual unit times (largest time unit is on the right!)
|
||||
val expectedOutputsDualAR = listOf(
|
||||
"0 دقائق 1 ثانية".reverseWordOrder(), // 0 minutes 1 second
|
||||
"0 دقائق 2 ثانية".reverseWordOrder(), // 0 minutes 2 seconds
|
||||
"1 دقيقة 0 ثانية".reverseWordOrder(), // 1 minute 0 seconds
|
||||
"2 دقائق 0 ثانية".reverseWordOrder(), // 2 minutes 0 seconds
|
||||
"1 ساعة 0 دقائق".reverseWordOrder(), // 1 hour 0 minutes
|
||||
"2 ساعات 0 دقائق".reverseWordOrder(), // 2 hours 0 minutes
|
||||
"1 يوم 0 ساعات".reverseWordOrder(), // 1 day 0 hours
|
||||
"2 أيام 0 ساعات".reverseWordOrder(), // 2 days 0 hours
|
||||
"1 يوم 7 ساعات".reverseWordOrder(), // 1 day 7 hours as single unit (1 day)
|
||||
"4 أيام 23 ساعات".reverseWordOrder(), // 4 days 23 hours as single unit (4 days)
|
||||
"1 أسبوع 2 أيام".reverseWordOrder(), // 1 week 2 days as single unit (1 week)
|
||||
"2 أسابيع 2 أيام".reverseWordOrder() // 2 weeks 2 days as single unit (2 weeks)
|
||||
)
|
||||
|
||||
Locale.setDefault(Locale.forLanguageTag("ar"))
|
||||
if (printDebug) Log.w(TAG, "AR tests - current locale is: " + Locale.getDefault())
|
||||
|
||||
// Just changing the context language won't result in the app being in RTL mode so we'll
|
||||
// force LocalisedTimeUtils to respond in RTL mode just for this instrumented test.
|
||||
LocalisedTimeUtil.forceUseOfRtlForTests(true)
|
||||
|
||||
performSingleTimeUnitStringComparison(expectedOutputsSingleAR)
|
||||
performDualTimeUnitStringComparison(expectedOutputsDualAR)
|
||||
}
|
||||
|
||||
// Unit test for durations in the Japanese language
|
||||
@Test
|
||||
fun timeSpanStrings_JA() {
|
||||
// Expected single largest time unit outputs for Japanese.
|
||||
// Note: The plural for multiple days below is technically incorrect because we only get
|
||||
// the added symbol (日間) for 5 days and above - but this will be correct more of the time
|
||||
// than just using the '1..4 days' symbol (日) for day plurals.
|
||||
val expectedOutputsSingle_JA = listOf(
|
||||
"1 秒", // 1 second
|
||||
"2 秒", // 2 seconds
|
||||
"1 分", // 1 minute
|
||||
"2 分", // 2 minutes
|
||||
"1 時間", // 1 hour
|
||||
"2 時間", // 2 hours
|
||||
"1 日", // 1 day
|
||||
"2 日間", // 2 days.
|
||||
"1 日", // 1 day 7 hours as single unit is: 1 day
|
||||
"4 日間", // 4 days 23 hours as single unit is: 4 days
|
||||
"1 週間", // 1 week 2 days as single unit is: 1 week
|
||||
"2 週間" // 2 weeks 2 days as single unit is: 2 weeks
|
||||
)
|
||||
|
||||
// Expected dual largest time unit outputs for Japanese
|
||||
val expectedOutputsDual_JA = listOf(
|
||||
"0 分 1 秒", // 1 second
|
||||
"0 分 2 秒", // 2 seconds
|
||||
"1 分 0 秒", // 1 minute
|
||||
"2 分 0 秒", // 2 minutes
|
||||
"1 時間 0 分", // 1 hour
|
||||
"2 時間 0 分", // 2 hours
|
||||
"1 日 0 時間", // 1 day
|
||||
"2 日間 0 時間", // 2 days
|
||||
"1 日 7 時間", // 1 day 7 hours
|
||||
"4 日間 23 時間", // 4 days 23 hours
|
||||
"1 週間 2 日間", // 1 week 2 days
|
||||
"2 週間 2 日間" // 2 weeks 2 days
|
||||
)
|
||||
|
||||
Locale.setDefault(Locale.forLanguageTag("ja"))
|
||||
if (printDebug) Log.w(TAG, "JA tests - current locale is: " + Locale.getDefault())
|
||||
|
||||
performSingleTimeUnitStringComparison(expectedOutputsSingle_JA)
|
||||
performDualTimeUnitStringComparison(expectedOutputsDual_JA)
|
||||
}
|
||||
|
||||
// Unit test for durations in the Urdu language (RTL language)
|
||||
@Test
|
||||
fun timeSpanStrings_UR() {
|
||||
// Expected single largest time unit outputs for Urdu
|
||||
val expectedOutputsSingle_UR = listOf(
|
||||
"1 سیکنڈ".reverseWordOrder(), // 1 second
|
||||
"2 سیکنڈ".reverseWordOrder(), // 2 seconds
|
||||
"1 منٹ".reverseWordOrder(), // 1 minute
|
||||
"2 منٹ".reverseWordOrder(), // 2 minutes
|
||||
"1 گھنٹہ".reverseWordOrder(), // 1 hour
|
||||
"2 گھنٹے".reverseWordOrder(), // 2 hours
|
||||
"1 دن".reverseWordOrder(), // 1 day
|
||||
"2 دن".reverseWordOrder(), // 2 days.
|
||||
"1 دن".reverseWordOrder(), // 1 day 7 hours as single unit is: 1 day
|
||||
"4 دن".reverseWordOrder(), // 4 days 23 hours as single unit is: 4 days
|
||||
"1 ہفتہ".reverseWordOrder(), // 1 week 2 days as single unit is: 1 week
|
||||
"2 ہفتے".reverseWordOrder() // 2 weeks 2 days as single unit is: 2 weeks
|
||||
)
|
||||
|
||||
// Expected dual largest time unit outputs for Urdu
|
||||
val expectedOutputsDual_UR = listOf(
|
||||
"0 منٹ 1 سیکنڈ".reverseWordOrder(), // 1 second -> 0 minutes 1 second
|
||||
"0 منٹ 2 سیکنڈ".reverseWordOrder(), // 2 seconds -> 0 minutes 2 seconds
|
||||
"1 منٹ 0 سیکنڈ".reverseWordOrder(), // 1 minute -> 1 minute 0 seconds
|
||||
"2 منٹ 0 سیکنڈ".reverseWordOrder(), // 2 minutes -> 2 minutes 0 seconds
|
||||
"1 گھنٹہ 0 منٹ".reverseWordOrder(), // 1 hour -> 1 hour 0 minutes
|
||||
"2 گھنٹے 0 منٹ".reverseWordOrder(), // 2 hours -> 2 hours 0 minutes
|
||||
"1 دن 0 گھنٹے".reverseWordOrder(), // 1 day -> 1 day 0 hours
|
||||
"2 دن 0 گھنٹے".reverseWordOrder(), // 2 days -> 2 days 0 hours
|
||||
"1 دن 7 گھنٹے".reverseWordOrder(), // 1 day 7 hours
|
||||
"4 دن 23 گھنٹے".reverseWordOrder(), // 4 days 23 hours
|
||||
"1 ہفتہ 2 دن".reverseWordOrder(), // 1 week 2 days
|
||||
"2 ہفتے 2 دن".reverseWordOrder() // 2 weeks 2 days
|
||||
)
|
||||
|
||||
Locale.setDefault(Locale.forLanguageTag("ur"))
|
||||
if (printDebug) Log.w(TAG, "UR tests - current locale is: " + Locale.getDefault())
|
||||
|
||||
// Just changing the context language won't result in the app being in RTL mode so we'll
|
||||
// force LocalisedTimeUtils to respond in RTL mode just for this instrumented test.
|
||||
LocalisedTimeUtil.forceUseOfRtlForTests(true)
|
||||
|
||||
performSingleTimeUnitStringComparison(expectedOutputsSingle_UR)
|
||||
performDualTimeUnitStringComparison(expectedOutputsDual_UR)
|
||||
}
|
||||
}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Afrikaans", "LanguageCode": "af", "Week": "week", "Weeks": "weke", "Day": "dag", "Days": "dae", "Hour": "uur", "Hours": "ure", "Minute": "minuut", "Minutes": "minute", "Second": "tweede", "Seconds": "sekondes"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Amharic", "LanguageCode": "am", "Week": "\u1233\u121d\u1295\u1275", "Weeks": "\u1233\u121d\u1295\u1273\u1275", "Day": "\u1240\u1295", "Days": "\u1240\u1293\u1275", "Hour": "\u1230\u12a0\u1275", "Hours": "\u1230\u12d3\u1273\u1275", "Minute": "\u12f0\u1242\u1243", "Minutes": "\u12f0\u1242\u1243\u12ce\u127d", "Second": "\u1201\u1208\u1270\u129b", "Seconds": "\u1230\u12a8\u1295\u12f6\u127d"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Arabic", "LanguageCode": "ar", "Week": "\u0623\u0633\u0628\u0648\u0639", "Weeks": "\u0623\u0633\u0627\u0628\u064a\u0639", "Day": "\u064a\u0648\u0645", "Days": "\u0623\u064a\u0627\u0645", "Hour": "\u0633\u0627\u0639\u0629", "Hours": "\u0633\u0627\u0639\u0627\u062a", "Minute": "دقيقة", "Minutes": "دقائق", "Second": "\u062b\u0627\u0646\u064a\u0629", "Seconds": "\u062b\u0627\u0646\u064a\u0629"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Azerbaijani", "LanguageCode": "az", "Week": "h\u0259ft\u0259", "Weeks": "h\u0259ft\u0259l\u0259r", "Day": "g\u00fcn", "Days": "g\u00fcnl\u0259r", "Hour": "saat", "Hours": "saat", "Minute": "d\u0259qiq\u0259", "Minutes": "d\u0259qiq\u0259", "Second": "ikinci", "Seconds": "saniy\u0259"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Belarusian", "LanguageCode": "be", "Week": "\u0442\u044b\u0434\u0437\u0435\u043d\u044c", "Weeks": "\u0442\u044b\u0434\u043d\u044f\u045e", "Day": "\u0434\u0437\u0435\u043d\u044c", "Days": "\u0434\u0437\u0451\u043d", "Hour": "\u0433\u0430\u0434\u0437\u0456\u043d\u0443", "Hours": "\u0433\u0430\u0434\u0437\u0456\u043d\u044b", "Minute": "\u0445\u0432\u0456\u043b\u0456\u043d\u0430", "Minutes": "\u0445\u0432\u0456\u043b\u0456\u043d", "Second": "\u0434\u0440\u0443\u0433\u0456", "Seconds": "\u0441\u0435\u043a\u0443\u043d\u0434"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Bulgarian", "LanguageCode": "bg", "Week": "\u0441\u0435\u0434\u043c\u0438\u0446\u0430", "Weeks": "\u0441\u0435\u0434\u043c\u0438\u0446\u0438", "Day": "\u0434\u0435\u043d", "Days": "\u0434\u043d\u0438", "Hour": "\u0447\u0430\u0441", "Hours": "\u0447\u0430\u0441\u0430", "Minute": "\u043c\u0438\u043d\u0443\u0442\u0430", "Minutes": "\u043c\u0438\u043d\u0443\u0442\u0438", "Second": "\u0432\u0442\u043e\u0440\u043e", "Seconds": "\u0441\u0435\u043a\u0443\u043d\u0434\u0438"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Bengali", "LanguageCode": "bn", "Week": "\u09b8\u09aa\u09cd\u09a4\u09be\u09b9", "Weeks": "\u09b8\u09aa\u09cd\u09a4\u09be\u09b9", "Day": "\u09a6\u09bf\u09a8", "Days": "\u09a6\u09bf\u09a8", "Hour": "\u0998\u09a8\u09cd\u099f\u09be", "Hours": "\u0998\u09a8\u09cd\u099f\u09be\u09b0", "Minute": "\u09ae\u09bf\u09a8\u09bf\u099f", "Minutes": "\u09ae\u09bf\u09a8\u09bf\u099f", "Second": "\u09a6\u09cd\u09ac\u09bf\u09a4\u09c0\u09af\u09bc", "Seconds": "\u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Bosnian", "LanguageCode": "bs", "Week": "sedmica", "Weeks": "weken", "Day": "dag", "Days": "dagen", "Hour": "uur", "Hours": "uur", "Minute": "minuut", "Minutes": "minuten", "Second": "seconde", "Seconds": "seconden"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Catalan", "LanguageCode": "ca", "Week": "setmana", "Weeks": "setmanes", "Day": "dia", "Days": "dies", "Hour": "hores", "Hours": "hores", "Minute": "minut", "Minutes": "minuts", "Second": "segon", "Seconds": "segons"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Corsican", "LanguageCode": "co", "Week": "settimana", "Weeks": "settimane", "Day": "ghjornu", "Days": "ghjorni", "Hour": "ora", "Hours": "ore", "Minute": "minutu", "Minutes": "minuti", "Second": "sicondu", "Seconds": "seconde"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Czech", "LanguageCode": "cs", "Week": "t\u00fdden", "Weeks": "t\u00fddn\u016f", "Day": "den", "Days": "dn\u00ed", "Hour": "hodina", "Hours": "hodin", "Minute": "minuta", "Minutes": "minut", "Second": "druh\u00fd", "Seconds": "sekundy"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Welsh", "LanguageCode": "cy", "Week": "wythnos", "Weeks": "wythnosau", "Day": "Dydd", "Days": "dyddiau", "Hour": "awr", "Hours": "oriau", "Minute": "munud", "Minutes": "munudau", "Second": "ail", "Seconds": "eiliadau"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Danish", "LanguageCode": "da", "Week": "uge", "Weeks": "uger", "Day": "dag", "Days": "dage", "Hour": "time", "Hours": "timer", "Minute": "minut", "Minutes": "minutter", "Second": "anden", "Seconds": "sekunder"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "German", "LanguageCode": "de", "Week": "Woche", "Weeks": "Wochen", "Day": "Tag", "Days": "Tage", "Hour": "Stunde", "Hours": "Std.", "Minute": "Minute", "Minutes": "Protokoll", "Second": "zweite", "Seconds": "Sekunden"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Greek", "LanguageCode": "el", "Week": "\u03b5\u03b2\u03b4\u03bf\u03bc\u03ac\u03b4\u03b1", "Weeks": "\u03b5\u03b2\u03b4\u03bf\u03bc\u03ac\u03b4\u03b5\u03c2", "Day": "\u03b7\u03bc\u03ad\u03c1\u03b1", "Days": "\u03b7\u03bc\u03ad\u03c1\u03b5\u03c2", "Hour": "\u03ce\u03c1\u03b1", "Hours": "\u03ce\u03c1\u03b5\u03c2", "Minute": "\u03bb\u03b5\u03c0\u03c4\u03cc", "Minutes": "\u03bb\u03b5\u03c0\u03c4\u03ac", "Second": "\u03b4\u03b5\u03cd\u03c4\u03b5\u03c1\u03bf\u03c2", "Seconds": "\u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "English", "LanguageCode": "en", "Week": "week", "Weeks": "weeks", "Day": "day", "Days": "days", "Hour": "hour", "Hours": "hours", "Minute": "minute", "Minutes": "minutes", "Second": "second", "Seconds": "seconds"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Esperanto", "LanguageCode": "eo", "Week": "semajno", "Weeks": "semajnoj", "Day": "tago", "Days": "tagoj", "Hour": "horo", "Hours": "horoj", "Minute": "minuto", "Minutes": "minutoj", "Second": "dua", "Seconds": "sekundoj"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Spanish", "LanguageCode": "es", "Week": "semana", "Weeks": "semanas", "Day": "d\u00eda", "Days": "d\u00edas", "Hour": "hora", "Hours": "horas", "Minute": "minuto", "Minutes": "minutos", "Second": "segundo", "Seconds": "segundos"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Estonian", "LanguageCode": "et", "Week": "n\u00e4dal", "Weeks": "n\u00e4dalaid", "Day": "p\u00e4eval", "Days": "p\u00e4evadel", "Hour": "tund", "Hours": "tundi", "Minute": "minut", "Minutes": "minutit", "Second": "teiseks", "Seconds": "sekundit"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Basque", "LanguageCode": "eu", "Week": "astea", "Weeks": "asteak", "Day": "eguna", "Days": "egunak", "Hour": "ordua", "Hours": "orduak", "Minute": "minutua", "Minutes": "minutu", "Second": "bigarrena", "Seconds": "segundoak"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Persian", "LanguageCode": "fa", "Week": "\u0647\u0641\u062a\u0647", "Weeks": "\u0647\u0641\u062a\u0647 \u0647\u0627", "Day": "\u0631\u0648\u0632", "Days": "\u0631\u0648\u0632\u0647\u0627", "Hour": "\u0633\u0627\u0639\u062a", "Hours": "\u0633\u0627\u0639\u062a \u0647\u0627", "Minute": "\u062f\u0642\u06cc\u0642\u0647", "Minutes": "\u062f\u0642\u0627\u06cc\u0642", "Second": "\u062f\u0648\u0645\u06cc\u0646", "Seconds": "\u062b\u0627\u0646\u06cc\u0647"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Finnish", "LanguageCode": "fi", "Week": "viikko", "Weeks": "viikkoa", "Day": "p\u00e4iv\u00e4", "Days": "p\u00e4iv\u00e4\u00e4", "Hour": "tunnin", "Hours": "tuntia", "Minute": "minuutti", "Minutes": "p\u00f6yt\u00e4kirja", "Second": "toinen", "Seconds": "sekuntia"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Filipino", "LanguageCode": "fil", "Week": "linggo", "Weeks": "linggo", "Day": "araw", "Days": "araw", "Hour": "oras", "Hours": "oras", "Minute": "minuto", "Minutes": "minuto", "Second": "pangalawa", "Seconds": "segundo"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "French", "LanguageCode": "fr", "Week": "semaine", "Weeks": "semaines", "Day": "jour", "Days": "jours", "Hour": "heure", "Hours": "heures", "Minute": "minute", "Minutes": "minutes", "Second": "seconde", "Seconds": "secondes"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Frisian", "LanguageCode": "fy", "Week": "wike", "Weeks": "wiken", "Day": "dei", "Days": "dagen", "Hour": "oere", "Hours": "oeren", "Minute": "min\u00fat", "Minutes": "minuten", "Second": "twadde", "Seconds": "sekonden"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Scots Gaelic", "LanguageCode": "gd", "Week": "seachdain", "Weeks": "seachdainean", "Day": "latha", "Days": "l\u00e0ithean", "Hour": "uair", "Hours": "uairean", "Minute": "mionaid", "Minutes": "mionaidean", "Second": "an d\u00e0rna", "Seconds": "diog"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Galician", "LanguageCode": "gl", "Week": "semana", "Weeks": "semanas", "Day": "d\u00eda", "Days": "d\u00edas", "Hour": "hora", "Hours": "horas", "Minute": "minuto", "Minutes": "minutos", "Second": "segundo", "Seconds": "segundos"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Gujarati", "LanguageCode": "gu", "Week": "\u0ab8\u0aaa\u0acd\u0aa4\u0abe\u0ab9", "Weeks": "\u0a85\u0aa0\u0ab5\u0abe\u0aa1\u0abf\u0aaf\u0abe", "Day": "\u0aa6\u0abf\u0ab5\u0ab8", "Days": "\u0aa6\u0abf\u0ab5\u0ab8", "Hour": "\u0a95\u0ab2\u0abe\u0a95", "Hours": "\u0a95\u0ab2\u0abe\u0a95", "Minute": "\u0aae\u0abf\u0aa8\u0abf\u0a9f", "Minutes": "\u0aae\u0abf\u0aa8\u0abf\u0a9f", "Second": "\u0aac\u0ac0\u0a9c\u0ac1\u0a82", "Seconds": "\u0ab8\u0ac7\u0a95\u0aa8\u0acd\u0aa1"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Hausa", "LanguageCode": "ha", "Week": "mako", "Weeks": "makonni", "Day": "rana", "Days": "kwanaki", "Hour": "awa", "Hours": "hours", "Minute": "minti", "Minutes": "mintuna", "Second": "na biyu", "Seconds": "seconds"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Hawaiian", "LanguageCode": "haw", "Week": "pule", "Weeks": "pule pule", "Day": "l\u0101", "Days": "l\u0101", "Hour": "hola", "Hours": "hola", "Minute": "minuke", "Minutes": "minuke", "Second": "ka lua", "Seconds": "kekona"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Hindi", "LanguageCode": "hi", "Week": "\u0938\u092a\u094d\u0924\u093e\u0939", "Weeks": "\u0939\u092b\u094d\u0924\u094b\u0902", "Day": "\u0926\u093f\u0928", "Days": "\u0926\u093f\u0928", "Hour": "\u0918\u0902\u091f\u093e", "Hours": "\u0918\u0902\u091f\u0947", "Minute": "\u092e\u093f\u0928\u091f", "Minutes": "\u092e\u093f\u0928\u091f", "Second": "\u0926\u0942\u0938\u0930\u093e", "Seconds": "\u0938\u0947\u0915\u0902\u0921"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Hmong", "LanguageCode": "hmn", "Week": "lub lim tiam", "Weeks": "lub lis piam", "Day": "hnub", "Days": "hnub", "Hour": "teev", "Hours": "teev", "Minute": "feeb", "Minutes": "feeb", "Second": "thib ob", "Seconds": "vib nas this"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Croatian", "LanguageCode": "hr", "Week": "tjedan", "Weeks": "tjedni", "Day": "dan", "Days": "dana", "Hour": "sat", "Hours": "sati", "Minute": "minuta", "Minutes": "minuta", "Second": "drugi", "Seconds": "sekundi"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Haitian Creole", "LanguageCode": "ht", "Week": "sem\u00e8n", "Weeks": "sem\u00e8n", "Day": "jou", "Days": "jou", "Hour": "\u00e8dtan", "Hours": "\u00e8dtan", "Minute": "minit", "Minutes": "minit", "Second": "dezy\u00e8m", "Seconds": "segonn"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Hungarian", "LanguageCode": "hu", "Week": "h\u00e9t", "Weeks": "h\u00e9tig", "Day": "nap", "Days": "napok", "Hour": "\u00f3ra", "Hours": "\u00f3r\u00e1k", "Minute": "perc", "Minutes": "percek", "Second": "m\u00e1sodik", "Seconds": "m\u00e1sodpercig"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Aermenian", "LanguageCode": "hy", "Week": "\u0576\u0565\u0564\u0561\u056c", "Weeks": "n\u00e4dalaid", "Day": "p\u00e4eval", "Days": "p\u00e4evadel", "Hour": "\u057f\u0578\u0582\u0576", "Hours": "\u057f\u0578\u0582\u0576\u0564\u056b", "Minute": "\u0580\u0578\u057a\u0565", "Minutes": "\u0580\u0578\u057a\u0565", "Second": "teiseks", "Seconds": "\u057d\u0565\u056f\u0578\u0582\u0576\u0564\u056b\u057f"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Indonesian", "LanguageCode": "id", "Week": "pekan", "Weeks": "minggu", "Day": "hari", "Days": "hari", "Hour": "jam", "Hours": "jam", "Minute": "menit", "Minutes": "menit", "Second": "Kedua", "Seconds": "detik"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Igbo", "LanguageCode": "ig", "Week": "izu", "Weeks": "izu", "Day": "\u1ee5b\u1ecdch\u1ecb", "Days": "\u1ee5b\u1ecdch\u1ecb", "Hour": "awa", "Hours": "awa", "Minute": "nkeji", "Minutes": "nkeji", "Second": "nke ab\u1ee5\u1ecd", "Seconds": "sek\u1ecdnd"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Icelandic", "LanguageCode": "is", "Week": "vika", "Weeks": "vikur", "Day": "dagur", "Days": "daga", "Hour": "klukkustund", "Hours": "klukkustundir", "Minute": "m\u00edn\u00fatu", "Minutes": "m\u00edn\u00fatur", "Second": "anna\u00f0", "Seconds": "sek\u00fandur"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Italian", "LanguageCode": "it", "Week": "settimana", "Weeks": "settimane", "Day": "giorno", "Days": "giorni", "Hour": "ora", "Hours": "ore", "Minute": "minuto", "Minutes": "minuti", "Second": "secondo", "Seconds": "secondi"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Hebrew", "LanguageCode": "iw", "Week": "\u05e9\u05c1\u05b8\u05d1\u05d5\u05bc\u05e2\u05b7", "Weeks": "\u05e9\u05d1\u05d5\u05e2\u05d5\u05ea", "Day": "\u05d9\u05b0\u05d5\u05b9\u05dd", "Days": "\u05d9\u05de\u05d9\u05dd", "Hour": "\u05e9\u05c1\u05b8\u05e2\u05b8\u05d4", "Hours": "\u05e9\u05e2\u05d4 (\u05d5\u05ea", "Minute": "\u05d3\u05b7\u05e7\u05b8\u05d4", "Minutes": "\u05d3\u05e7\u05d5\u05ea", "Second": "\u05e9\u05c1\u05b0\u05e0\u05b4\u05d9\u05b8\u05d4", "Seconds": "\u05e9\u05e0\u05d9\u05d5\u05ea"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Japanese", "LanguageCode": "ja", "Week": "週間", "Weeks": "週間", "Day": "日", "Days": "日間", "Hour": "時間", "Hours": "時間", "Minute": "分", "Minutes": "分", "Second": "秒", "Seconds": "秒"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Javanese", "LanguageCode": "jv", "Week": "minggu", "Weeks": "minggu", "Day": "dina", "Days": "dina", "Hour": "jam", "Hours": "jam", "Minute": "menit", "Minutes": "menit", "Second": "kapindho", "Seconds": "detik"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Georgian", "LanguageCode": "ka", "Week": "\u10d9\u10d5\u10d8\u10e0\u10d0", "Weeks": "\u10d9\u10d5\u10d8\u10e0\u10d4\u10d1\u10d8", "Day": "\u10d3\u10e6\u10d4\u10e1", "Days": "\u10d3\u10e6\u10d4\u10d4\u10d1\u10d8", "Hour": "\u10e1\u10d0\u10d0\u10d7\u10d8", "Hours": "\u10e1\u10d0\u10d0\u10d7\u10d4\u10d1\u10d8", "Minute": "\u10ec\u10e3\u10d7\u10d8", "Minutes": "\u10ec\u10e3\u10d7\u10d4\u10d1\u10d8", "Second": "\u10db\u10d4\u10dd\u10e0\u10d4", "Seconds": "\u10ec\u10d0\u10db\u10d8"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Kazakh", "LanguageCode": "kk", "Week": "\u0430\u043f\u0442\u0430", "Weeks": "\u0430\u043f\u0442\u0430", "Day": "\u043a\u04af\u043d\u0456", "Days": "\u043a\u04af\u043d\u0434\u0435\u0440", "Hour": "\u0441\u0430\u0493\u0430\u0442", "Hours": "\u0441\u0430\u0493\u0430\u0442", "Minute": "\u043c\u0438\u043d\u0443\u0442", "Minutes": "\u043c\u0438\u043d\u0443\u0442", "Second": "\u0435\u043a\u0456\u043d\u0448\u0456", "Seconds": "\u0441\u0435\u043a\u0443\u043d\u0434"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Khmer", "LanguageCode": "km", "Week": "\u179f\u1794\u17d2\u178f\u17b6\u17a0\u17cd", "Weeks": "\u179f\u1794\u17d2\u178f\u17b6\u17a0\u17cd", "Day": "\u1790\u17d2\u1784\u17c3", "Days": "\u1790\u17d2\u1784\u17c3", "Hour": "\u1798\u17c9\u17c4\u1784", "Hours": "\u1798\u17c9\u17c4\u1784", "Minute": "\u1793\u17b6\u1791\u17b8", "Minutes": "\u1793\u17b6\u1791\u17b8", "Second": "\u1791\u17b8\u1796\u17b8\u179a", "Seconds": "\u179c\u17b7\u1793\u17b6\u1791\u17b8"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Kannada", "LanguageCode": "kn", "Week": "\u0cb5\u0cbe\u0cb0", "Weeks": "\u0cb5\u0cbe\u0cb0\u0c97\u0cb3\u0cc1", "Day": "\u0ca6\u0cbf\u0ca8", "Days": "\u0ca6\u0cbf\u0ca8\u0c97\u0cb3\u0cc1", "Hour": "\u0c97\u0c82\u0c9f\u0cc6", "Hours": "\u0c97\u0c82\u0c9f\u0cc6\u0c97\u0cb3\u0cc1", "Minute": "\u0ca8\u0cbf\u0cae\u0cbf\u0cb7", "Minutes": "\u0ca8\u0cbf\u0cae\u0cbf\u0cb7\u0c97\u0cb3\u0cc1", "Second": "\u0c8e\u0cb0\u0ca1\u0ca8\u0cc6\u0cd5", "Seconds": "\u0cb8\u0cc6\u0c95\u0cc6\u0c82\u0ca1\u0cc1\u0c97\u0cb3\u0cc1"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Korean", "LanguageCode": "ko", "Week": "\uc8fc", "Weeks": "\uc8fc", "Day": "\ub0ae", "Days": "\ub0a0", "Hour": "\uc2dc\uac04", "Hours": "\uc2dc\uac04", "Minute": "\ubd84", "Minutes": "\ubd84", "Second": "\ub450\ubc88\uc9f8", "Seconds": "\ucd08"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Kurdish", "LanguageCode": "ku", "Week": "hefte", "Weeks": "hefteyan", "Day": "roj", "Days": "rojan", "Hour": "seet", "Hours": "saetan", "Minute": "deqqe", "Minutes": "minutes", "Second": "duyem", "Seconds": "seconds"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Kyrgyz", "LanguageCode": "ky", "Week": "\u0436\u0443\u043c\u0430", "Weeks": "\u0436\u0443\u043c\u0430", "Day": "\u043a\u04af\u043d", "Days": "\u043a\u04af\u043d", "Hour": "\u0441\u0430\u0430\u0442", "Hours": "\u0441\u0430\u0430\u0442", "Minute": "\u043c\u04af\u043d\u04e9\u0442", "Minutes": "\u043c\u04af\u043d\u04e9\u0442", "Second": "\u044d\u043a\u0438\u043d\u0447\u0438", "Seconds": "\u0441\u0435\u043a\u0443\u043d\u0434"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Luxembourgish", "LanguageCode": "lb", "Week": "Woch", "Weeks": "Wochen", "Day": "Dag", "Days": "Deeg", "Hour": "Stonn", "Hours": "Stonnen", "Minute": "Minutt", "Minutes": "Minutten", "Second": "zweeten", "Seconds": "Sekonnen"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Lao", "LanguageCode": "lo", "Week": "\u0ead\u0eb2\u0e97\u0eb4\u0e94", "Weeks": "\u0ead\u0eb2\u0e97\u0eb4\u0e94", "Day": "\u0ea1\u0eb7\u0ec9", "Days": "\u0ea1\u0eb7\u0ec9", "Hour": "\u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87", "Hours": "\u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87", "Minute": "\u0e99\u0eb2\u0e97\u0eb5", "Minutes": "\u0e99\u0eb2\u0e97\u0eb5", "Second": "\u0e97\u0eb5\u0eaa\u0ead\u0e87", "Seconds": "\u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Lithuanian", "LanguageCode": "lt", "Week": "savait\u0119", "Weeks": "savaites", "Day": "dien\u0105", "Days": "dien\u0173", "Hour": "valand\u0105", "Hours": "valand\u0173", "Minute": "minut\u0117", "Minutes": "minu\u010di\u0173", "Second": "antra", "Seconds": "sekund\u017ei\u0173"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Latvian", "LanguageCode": "lv", "Week": "ned\u0113\u013ca", "Weeks": "ned\u0113\u013cas", "Day": "diena", "Days": "dienas", "Hour": "stunda", "Hours": "stundas", "Minute": "min\u016bte", "Minutes": "min\u016btes", "Second": "otrais", "Seconds": "sekundes"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Malagasy", "LanguageCode": "mg", "Week": "herinandro", "Weeks": "HERINANDRON'NY", "Day": "andro", "Days": "andro", "Hour": "ora", "Hours": "ORA", "Minute": "minitra", "Minutes": "minitra", "Second": "FAHAROA", "Seconds": "segondra"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Maori", "LanguageCode": "mi", "Week": "wiki", "Weeks": "wiki", "Day": "r\u0101", "Days": "nga ra", "Hour": "haora", "Hours": "haora", "Minute": "meneti", "Minutes": "meneti", "Second": "tuarua", "Seconds": "h\u0113kona"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Macedonian", "LanguageCode": "mk", "Week": "\u043d\u0435\u0434\u0435\u043b\u0430", "Weeks": "\u043d\u0435\u0434\u0435\u043b\u0438", "Day": "\u0434\u0435\u043d", "Days": "\u0434\u0435\u043d\u043e\u0432\u0438", "Hour": "\u0447\u0430\u0441", "Hours": "\u0447\u0430\u0441\u043e\u0432\u0438", "Minute": "\u043c\u0438\u043d\u0443\u0442\u0430", "Minutes": "\u043c\u0438\u043d\u0443\u0442\u0438", "Second": "\u0432\u0442\u043e\u0440\u043e", "Seconds": "\u0441\u0435\u043a\u0443\u043d\u0434\u0438"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Malayalam", "LanguageCode": "ml", "Week": "\u0d06\u0d34\u0d4d\u0d1a", "Weeks": "\u0d06\u0d34\u0d4d\u0d1a\u0d15\u0d7e", "Day": "\u0d26\u0d3f\u0d35\u0d38\u0d02", "Days": "\u0d26\u0d3f\u0d35\u0d38\u0d19\u0d4d\u0d19\u0d33\u0d3f\u0d7d", "Hour": "\u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c", "Hours": "\u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d31\u0d41\u0d15\u0d7e", "Minute": "\u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d", "Minutes": "\u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d", "Second": "\u0d30\u0d23\u0d4d\u0d1f\u0d3e\u0d2e\u0d24\u0d4d\u0d24\u0d47\u0d24\u0d4d", "Seconds": "\u0d38\u0d46\u0d15\u0d4d\u0d15\u0d7b\u0d4d\u0d31\u0d41\u0d15\u0d7e"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Mongolian", "LanguageCode": "mn", "Week": "\u0434\u043e\u043b\u043e\u043e \u0445\u043e\u043d\u043e\u0433", "Weeks": "\u0434\u043e\u043b\u043e\u043e \u0445\u043e\u043d\u043e\u0433", "Day": "\u04e9\u0434\u04e9\u0440", "Days": "\u04e9\u0434\u0440\u04af\u04af\u0434", "Hour": "\u0446\u0430\u0433", "Hours": "\u0446\u0430\u0433", "Minute": "\u043c\u0438\u043d\u0443\u0442", "Minutes": "\u043c\u0438\u043d\u0443\u0442", "Second": "\u0445\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440\u0442", "Seconds": "\u0441\u0435\u043a\u0443\u043d\u0434"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Marathi", "LanguageCode": "mr", "Week": "\u0906\u0920\u0935\u0921\u093e", "Weeks": "\u0906\u0920\u0935\u0921\u0947", "Day": "\u0926\u093f\u0935\u0938", "Days": "\u0926\u093f\u0935\u0938", "Hour": "\u0924\u093e\u0938", "Hours": "\u0924\u093e\u0938", "Minute": "\u092e\u093f\u0928\u093f\u091f", "Minutes": "\u092e\u093f\u0928\u093f\u091f\u0947", "Second": "\u0926\u0941\u0938\u0930\u093e", "Seconds": "\u0938\u0947\u0915\u0902\u0926"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Malay", "LanguageCode": "ms", "Week": "minggu", "Weeks": "minggu", "Day": "hari", "Days": "hari", "Hour": "jam", "Hours": "Jam", "Minute": "minit", "Minutes": "minit", "Second": "kedua", "Seconds": "detik"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Maltese", "LanguageCode": "mt", "Week": "\u0121img\u0127a", "Weeks": "\u0121img\u0127at", "Day": "jum", "Days": "jiem", "Hour": "sieg\u0127a", "Hours": "sig\u0127at", "Minute": "minuta", "Minutes": "minuti", "Second": "it-tieni", "Seconds": "sekondi"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Myanmar (Burmese)", "LanguageCode": "my", "Week": "\u1010\u1005\u103a\u1015\u1010\u103a", "Weeks": "\u101b\u1000\u103a\u101e\u1010\u1039\u1010\u1015\u1010\u103a", "Day": "\u1014\u1031\u1037", "Days": "\u1014\u1031\u1037\u101b\u1000\u103a\u1019\u103b\u102c\u1038", "Hour": "\u1014\u102c\u101b\u102e", "Hours": "\u1014\u102c\u101b\u102e", "Minute": "\u1019\u102d\u1014\u1005\u103a", "Minutes": "\u1019\u102d\u1014\u1005\u103a\u1019\u103b\u102c\u1038", "Second": "\u1012\u102f\u1010\u102d\u101a", "Seconds": "\u1005\u1000\u1039\u1000\u1014\u1037\u103a"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Nepali", "LanguageCode": "ne", "Week": "\u0939\u092a\u094d\u0924\u093e", "Weeks": "\u0939\u092a\u094d\u0924\u093e\u0939\u0930\u0942", "Day": "\u0926\u093f\u0928", "Days": "\u0926\u093f\u0928\u0939\u0930\u0942", "Hour": "\u0918\u0923\u094d\u091f\u093e", "Hours": "\u0918\u0923\u094d\u091f\u093e", "Minute": "\u092e\u093f\u0928\u0947\u091f", "Minutes": "\u092e\u093f\u0928\u0947\u091f", "Second": "\u0926\u094b\u0938\u094d\u0930\u094b", "Seconds": "\u0938\u0947\u0915\u0947\u0928\u094d\u0921"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Dutch", "LanguageCode": "nl", "Week": "week", "Weeks": "weken", "Day": "dag", "Days": "dagen", "Hour": "uur", "Hours": "uur", "Minute": "minuut", "Minutes": "minuten", "Second": "seconde", "Seconds": "seconden"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Norwegian", "LanguageCode": "no", "Week": "uke", "Weeks": "uker", "Day": "dag", "Days": "dager", "Hour": "time", "Hours": "timer", "Minute": "minutt", "Minutes": "minutter", "Second": "sekund", "Seconds": "sekunder"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Nyanja (Chichewa)", "LanguageCode": "ny", "Week": "sabata", "Weeks": "masabata", "Day": "tsiku", "Days": "masiku", "Hour": "ola", "Hours": "maola", "Minute": "miniti", "Minutes": "mphindi", "Second": "chachiwiri", "Seconds": "masekondi"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Odia (Oriya)", "LanguageCode": "or", "Week": "\u0b38\u0b2a\u0b4d\u0b24\u0b3e\u0b39", "Weeks": "\u0b38\u0b2a\u0b4d\u0b24\u0b3e\u0b39\u0b17\u0b41\u0b21\u0b3f\u0b15 |", "Day": "\u0b26\u0b3f\u0b28", "Days": "\u0b26\u0b3f\u0b28", "Hour": "\u0b18\u0b23\u0b4d\u0b1f\u0b3e", "Hours": "\u0b18\u0b23\u0b4d\u0b1f\u0b3e", "Minute": "\u0b2e\u0b3f\u0b28\u0b3f\u0b1f\u0b4d", "Minutes": "\u0b2e\u0b3f\u0b28\u0b3f\u0b1f\u0b4d |", "Second": "\u0b26\u0b4d\u0b71\u0b3f\u0b24\u0b40\u0b5f", "Seconds": "\u0b38\u0b47\u0b15\u0b47\u0b23\u0b4d\u0b21\u0b4d |"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Punjabi", "LanguageCode": "pa", "Week": "\u0a39\u0a2b\u0a3c\u0a24\u0a3e", "Weeks": "\u0a39\u0a2b\u0a3c\u0a24\u0a47", "Day": "\u0a26\u0a3f\u0a28", "Days": "\u0a26\u0a3f\u0a28", "Hour": "\u0a18\u0a70\u0a1f\u0a3e", "Hours": "\u0a18\u0a70\u0a1f\u0a47", "Minute": "\u0a2e\u0a3f\u0a70\u0a1f", "Minutes": "\u0a2e\u0a3f\u0a70\u0a1f", "Second": "\u0a26\u0a42\u0a1c\u0a3e", "Seconds": "\u0a38\u0a15\u0a3f\u0a70\u0a1f"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Polish", "LanguageCode": "pl", "Week": "tydzie\u0144", "Weeks": "tygodnie", "Day": "dzie\u0144", "Days": "dni", "Hour": "godzina", "Hours": "godziny", "Minute": "minuta", "Minutes": "minuty", "Second": "drugi", "Seconds": "sekundy"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Pashto", "LanguageCode": "ps", "Week": "\u0627\u0648\u0646\u06cd", "Weeks": "\u0627\u0648\u0646\u06cd", "Day": "\u0648\u0631\u0681", "Days": "\u0648\u0631\u0681\u06d0", "Hour": "\u0633\u0627\u0639\u062a", "Hours": "\u0633\u0627\u0639\u062a\u0648\u0646\u0647", "Minute": "\u062f\u0642\u06cc\u0642\u0647", "Minutes": "\u062f\u0642\u06cc\u0642\u06d0", "Second": "\u062f\u0648\u0647\u0645", "Seconds": "\u062b\u0627\u0646\u06cc\u06d0"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Portuguese", "LanguageCode": "pt", "Week": "semana", "Weeks": "semanas", "Day": "dia", "Days": "dias", "Hour": "hora", "Hours": "horas", "Minute": "minuto", "Minutes": "minutos", "Second": "segundo", "Seconds": "segundos"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Romanian", "LanguageCode": "ro", "Week": "s\u0103pt\u0103m\u00e2n\u0103", "Weeks": "s\u0103pt\u0103m\u00e2ni", "Day": "zi", "Days": "zile", "Hour": "ora", "Hours": "ore", "Minute": "minut", "Minutes": "minute", "Second": "al doilea", "Seconds": "secunde"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Russian", "LanguageCode": "ru", "Week": "\u043d\u0435\u0434\u0435\u043b\u044f", "Weeks": "\u043d\u0435\u0434\u0435\u043b\u0438", "Day": "\u0434\u0435\u043d\u044c", "Days": "\u0434\u043d\u0438", "Hour": "\u0447\u0430\u0441", "Hours": "\u0447\u0430\u0441\u044b", "Minute": "\u043c\u0438\u043d\u0443\u0442\u0430", "Minutes": "\u043c\u0438\u043d\u0443\u0442\u044b", "Second": "\u0432\u0442\u043e\u0440\u043e\u0439", "Seconds": "\u0441\u0435\u043a\u0443\u043d\u0434\u044b"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Kinyarwanda", "LanguageCode": "rw", "Week": "icyumweru", "Weeks": "ibyumweru", "Day": "umunsi", "Days": "iminsi", "Hour": "isaha", "Hours": "amasaha", "Minute": "umunota", "Minutes": "iminota", "Second": "kabiri", "Seconds": "amasegonda"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Sindhi", "LanguageCode": "sd", "Week": "\u0647\u0641\u062a\u0648", "Weeks": "\u0647\u0641\u062a\u0627", "Day": "\u068f\u064a\u0646\u0647\u0646", "Days": "\u068f\u064a\u0646\u0647\u0646", "Hour": "\u06aa\u0644\u0627\u06aa", "Hours": "\u06aa\u0644\u0627\u06aa", "Minute": "\u0645\u0646\u067d", "Minutes": "\u0645\u0646\u067d", "Second": "\u067b\u064a\u0648\u0646", "Seconds": "\u0633\u064a\u06aa\u0646\u068a"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Sinhala (Sinhalese)", "LanguageCode": "si", "Week": "\u0dc3\u0dad\u0dd2\u0dba", "Weeks": "\u0dc3\u0dad\u0dd2", "Day": "\u0daf\u0dc0\u0dc3", "Days": "\u0daf\u0dd2\u0db1", "Hour": "\u0db4\u0dd0\u0dba", "Hours": "\u0db4\u0dd0\u0dba", "Minute": "\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4\u0dc0", "Minutes": "\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4", "Second": "\u0daf\u0dd9\u0dc0\u0dd0\u0db1\u0dd2", "Seconds": "\u0dad\u0dad\u0dca\u0db4\u0dbb"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Slovak", "LanguageCode": "sk", "Week": "t\u00fd\u017ede\u0148", "Weeks": "t\u00fd\u017ed\u0148ov", "Day": "de\u0148", "Days": "dni", "Hour": "hodina", "Hours": "hodiny", "Minute": "min\u00fatu", "Minutes": "min\u00fat", "Second": "druh\u00fd", "Seconds": "sek\u00fand"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Slovenian", "LanguageCode": "sl", "Week": "teden", "Weeks": "tedne", "Day": "dan", "Days": "dnevi", "Hour": "uro", "Hours": "ure", "Minute": "minuta", "Minutes": "minut", "Second": "drugo", "Seconds": "sekund"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Samoan", "LanguageCode": "sm", "Week": "vaiaso", "Weeks": "vaiaso", "Day": "aso", "Days": "aso", "Hour": "itula", "Hours": "itula", "Minute": "minute", "Minutes": "minute", "Second": "tulaga lua", "Seconds": "sekone"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Shona", "LanguageCode": "sn", "Week": "vhiki", "Weeks": "mavhiki", "Day": "zuva", "Days": "mazuva", "Hour": "awa", "Hours": "maawa", "Minute": "Mineti", "Minutes": "maminitsi", "Second": "chepiri", "Seconds": "seconds"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Somali", "LanguageCode": "so", "Week": "usbuuca", "Weeks": "toddobaadyo", "Day": "maalin", "Days": "maalmo", "Hour": "saac", "Hours": "saacadood", "Minute": "daqiiqo", "Minutes": "daqiiqado", "Second": "labaad", "Seconds": "ilbiriqsi"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Albanian", "LanguageCode": "sq", "Week": "jav\u00eb", "Weeks": "weken", "Day": "dag", "Days": "dagen", "Hour": "uur", "Hours": "uur", "Minute": "minuut", "Minutes": "minut\u00eb", "Second": "dyt\u00eb", "Seconds": "dyt\u00ebsoj"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Serbian", "LanguageCode": "sr", "Week": "\u041d\u0435\u0434\u0435\u0459\u0430", "Weeks": "\u043d\u0435\u0434\u0435\u0459\u0435", "Day": "\u0434\u0430\u043d", "Days": "\u0434\u0430\u043d\u0430", "Hour": "\u0441\u0430\u0442", "Hours": "\u0441\u0430\u0442\u0438", "Minute": "\u043c\u0438\u043d\u0443\u0442", "Minutes": "\u043c\u0438\u043d\u0443\u0442\u0430", "Second": "\u0434\u0440\u0443\u0433\u043e", "Seconds": "\u0441\u0435\u043a\u0443\u043d\u0434\u0438"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Sesotho", "LanguageCode": "st", "Week": "beke", "Weeks": "libeke", "Day": "letsatsi", "Days": "matsatsi", "Hour": "hora", "Hours": "lihora", "Minute": "motsotso", "Minutes": "metsotso", "Second": "ea bobeli", "Seconds": "metsotsoana"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Sudanese", "LanguageCode": "su", "Week": "minggu", "Weeks": "minggu", "Day": "dinten", "Days": "po\u00e9", "Hour": "jam", "Hours": "jam", "Minute": "menit", "Minutes": "menit", "Second": "kadua", "Seconds": "detik"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Swedish", "LanguageCode": "sv", "Week": "vecka", "Weeks": "Veckor", "Day": "dag", "Days": "dagar", "Hour": "timme", "Hours": "timmar", "Minute": "minut", "Minutes": "minuter", "Second": "andra", "Seconds": "sekunder"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Swahili", "LanguageCode": "sw", "Week": "wiki", "Weeks": "wiki", "Day": "siku", "Days": "siku", "Hour": "saa", "Hours": "masaa", "Minute": "dakika", "Minutes": "dakika", "Second": "pili", "Seconds": "sekunde"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Tamil", "LanguageCode": "ta", "Week": "\u0bb5\u0bbe\u0bb0\u0bae\u0bcd", "Weeks": "\u0bb5\u0bbe\u0bb0\u0b99\u0bcd\u0b95\u0bb3\u0bcd", "Day": "\u0ba8\u0bbe\u0bb3\u0bcd", "Days": "\u0ba8\u0bbe\u0b9f\u0bcd\u0b95\u0bb3\u0bbf\u0bb2\u0bcd", "Hour": "\u0bae\u0ba3\u0bbf", "Hours": "\u0bae\u0ba3\u0bbf", "Minute": "\u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0bae\u0bcd", "Minutes": "\u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd", "Second": "\u0b87\u0bb0\u0ba3\u0bcd\u0b9f\u0bbe\u0bb5\u0ba4\u0bc1", "Seconds": "\u0bb5\u0bbf\u0ba9\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Telugu", "LanguageCode": "te", "Week": "\u0c35\u0c3e\u0c30\u0c02", "Weeks": "\u0c35\u0c3e\u0c30\u0c3e\u0c32\u0c41", "Day": "\u0c30\u0c4b\u0c1c\u0c41", "Days": "\u0c30\u0c4b\u0c1c\u0c41\u0c32\u0c41", "Hour": "\u0c17\u0c02\u0c1f", "Hours": "\u0c17\u0c02\u0c1f\u0c32\u0c41", "Minute": "\u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c02", "Minutes": "\u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c3e\u0c32\u0c41", "Second": "\u0c30\u0c46\u0c02\u0c21\u0c35", "Seconds": "\u0c38\u0c46\u0c15\u0c28\u0c4d\u0c32\u0c41"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Tajik", "LanguageCode": "tg", "Week": "\u04b3\u0430\u0444\u0442\u0430", "Weeks": "\u04b3\u0430\u0444\u0442\u0430\u04b3\u043e", "Day": "\u0440\u04ef\u0437", "Days": "\u0440\u04ef\u0437", "Hour": "\u0441\u043e\u0430\u0442", "Hours": "\u0441\u043e\u0430\u0442", "Minute": "\u0434\u0430\u049b\u0438\u049b\u0430", "Minutes": "\u0434\u0430\u049b\u0438\u049b\u0430", "Second": "\u0434\u0443\u044e\u043c", "Seconds": "\u0441\u043e\u043d\u0438\u044f"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Thai", "LanguageCode": "th", "Week": "\u0e2a\u0e31\u0e1b\u0e14\u0e32\u0e2b\u0e4c", "Weeks": "\u0e2a\u0e31\u0e1b\u0e14\u0e32\u0e2b\u0e4c", "Day": "\u0e27\u0e31\u0e19", "Days": "\u0e27\u0e31\u0e19", "Hour": "\u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07", "Hours": "\u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07", "Minute": "\u0e19\u0e32\u0e17\u0e35", "Minutes": "\u0e19\u0e32\u0e17\u0e35", "Second": "\u0e17\u0e35\u0e48\u0e2a\u0e2d\u0e07", "Seconds": "\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Turkmen", "LanguageCode": "tk", "Week": "hepde", "Weeks": "hepdeler", "Day": "g\u00fcn", "Days": "g\u00fcnler", "Hour": "sagat", "Hours": "sagat", "Minute": "minut", "Minutes": "minut", "Second": "ikinji", "Seconds": "sekunt"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Turkish", "LanguageCode": "tr", "Week": "hafta", "Weeks": "haftalar", "Day": "g\u00fcn", "Days": "g\u00fcnler", "Hour": "saat", "Hours": "saat", "Minute": "dakika", "Minutes": "dakika", "Second": "ikinci", "Seconds": "saniye"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Tatar", "LanguageCode": "tt", "Week": "\u0430\u0442\u043d\u0430", "Weeks": "\u0430\u0442\u043d\u0430\u043b\u0430\u0440", "Day": "\u043a\u04e9\u043d", "Days": "\u043a\u04e9\u043d\u043d\u04d9\u0440", "Hour": "\u0441\u04d9\u0433\u0430\u0442\u044c", "Hours": "\u0441\u04d9\u0433\u0430\u0442\u044c\u043b\u04d9\u0440", "Minute": "\u043c\u0438\u043d\u0443\u0442", "Minutes": "\u043c\u0438\u043d\u0443\u0442", "Second": "\u0438\u043a\u0435\u043d\u0447\u0435", "Seconds": "\u0441\u0435\u043a\u0443\u043d\u0434"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Uyghur", "LanguageCode": "ug", "Week": "\u06be\u06d5\u067e\u062a\u06d5", "Weeks": "\u06be\u06d5\u067e\u062a\u06d5", "Day": "\u0643\u06c8\u0646", "Days": "\u0643\u06c8\u0646\u0644\u06d5\u0631", "Hour": "\u0633\u0627\u0626\u06d5\u062a", "Hours": "\u0633\u0627\u0626\u06d5\u062a", "Minute": "\u0645\u0649\u0646\u06c7\u062a", "Minutes": "\u0645\u0649\u0646\u06c7\u062a", "Second": "\u0626\u0649\u0643\u0643\u0649\u0646\u0686\u0649", "Seconds": "\u0633\u06d0\u0643\u06c7\u0646\u062a"}
|
@@ -0,0 +1 @@
|
||||
{"LanguageName": "Ukranian", "LanguageCode": "uk", "Week": "\u0442\u0438\u0436\u0434\u0435\u043d\u044c", "Weeks": "\u0442\u0438\u0436\u043d\u0456\u0432", "Day": "\u0434\u0435\u043d\u044c", "Days": "\u0434\u043d\u0456\u0432", "Hour": "\u0433\u043e\u0434\u0438\u043d\u0430", "Hours": "\u0433\u043e\u0434\u0438\u043d\u0438", "Minute": "\u0445\u0432\u0438\u043b\u0438\u043d\u0430", "Minutes": "\u0445\u0432\u0438\u043b\u0438\u043d", "Second": "\u0434\u0440\u0443\u0433\u0438\u0439", "Seconds": "\u0441\u0435\u043a\u0443\u043d\u0434"}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user