Compare commits

..

117 Commits

Author SHA1 Message Date
5999b8ed4a Release 2.2.2 (#170) 2019-10-25 05:44:53 +00:00
2cba285076 Merge branch 'backport_162' of gitnex/GitNex into release-2.2 2019-10-21 17:31:44 +00:00
24a552f0a9 Fix login with email for my repositories 2019-10-21 18:57:52 +02:00
d9a7fa4e44 Merge branch 'bugfix-release-2.2.1' of gitnex/GitNex into release-2.2 2019-10-18 14:55:15 +00:00
9950d4ea65 prepare release 2.2.1 2019-10-18 19:51:56 +05:00
98054b89cc Merge branch 'fix-empty-repo-bug' of gitnex/GitNex into release-2.2 2019-10-18 13:47:00 +00:00
24d56c625e Fix #154 2019-10-18 18:40:54 +05:00
5970995ef0 added file viewer 2019-10-18 10:28:18 +05:00
cf75c61704 release 2.2.0 2019-10-18 10:10:47 +05:00
8ac92a8b3c Merge branch '121-sub-dir-browsing' of gitnex/GitNex into master 2019-10-17 22:49:49 +00:00
f1f92ba494 make CI work 2019-10-18 00:46:19 +02:00
d7b1a226d0 implemented sub dir view 2019-10-17 22:47:27 +05:00
2bebe1e81d Merge branch 'crowdin_2019-10-17' of gitnex/GitNex into master 2019-10-17 15:54:59 +00:00
f5d560c601 Update Crowdin 2019-10-17 16:09:40 +02:00
d27000d481 Merge branch 'minor-fixes' of gitnex/GitNex into master 2019-10-17 13:57:55 +00:00
9aff1cb42a Minor ui fixes 2019-10-16 18:28:24 +05:00
7fe376fa44 Merge branch 'improve-ci' of gitnex/GitNex into master 2019-10-14 10:02:31 +00:00
6da4398369 dont run with empty task 2019-10-14 11:27:04 +02:00
dac0f690d8 more precise name 2019-10-14 11:06:46 +02:00
8a7031e7f5 Merge branch 'translation_add-Serbian' of 6543/GitNex into master 2019-10-14 05:11:31 +00:00
dd5f17d54d format code 2019-10-13 19:19:44 +02:00
505c930c32 first sr strings 2019-10-13 19:19:20 +02:00
edb6cdf154 add Serbian to Settings 2019-10-13 19:19:04 +02:00
687b66751f Merge branch 'crowdin_2019-10-13' of gitnex/GitNex into master 2019-10-13 12:51:24 +00:00
f14ae18324 Merge branch 'translation_add-Italian' of 6543/GitNex into master 2019-10-13 12:50:46 +00:00
ea52d6c6d2 dont run twice 2019-10-13 02:46:52 +02:00
40d12c3b97 Update Translation 2019-10-13 02:13:53 +02:00
32ebf31ef4 add first it strings 2019-10-13 02:08:46 +02:00
7fc4146c98 add Italian 2019-10-13 02:08:27 +02:00
e296a83aab Merge branch 'update-libs' of gitnex/GitNex into master 2019-10-12 17:13:43 +00:00
0fc7c67d0b update libs 2019-10-12 19:34:33 +05:00
143d680627 Merge branch '136-watch-a-repo' of gitnex/GitNex into master 2019-10-12 13:29:43 +00:00
69745b027e Implemented watch and unwatch a repository 2019-10-12 14:00:36 +05:00
7f3aed9bae fix star repo layout 2019-10-12 12:55:12 +05:00
5496401a77 Merge branch '130-star-a-repo' of gitnex/GitNex into master 2019-10-11 20:18:15 +00:00
4c0fd3c286 Implemented star/unstar a repository 2019-10-12 01:03:01 +05:00
40f924de2e Merge branch 'translation_add-Finnish' of 6543/GitNex into master 2019-10-11 19:24:49 +00:00
1953a9feff add Finnish 2019-10-11 20:14:59 +02:00
24c71b4beb Merge branch 'drone-rename-pipeline' of gitnex/GitNex into master 2019-10-11 18:08:52 +00:00
958606e476 add first strings 2019-10-11 20:07:50 +02:00
39d1007423 Drone Rename Pipeline
Rename Pipeline -> it does not loon nice and does not make sense
2019-10-11 18:02:40 +00:00
0e673bb256 Merge branch 'mentions' of 6543/GitNex into master 2019-10-11 16:53:11 +00:00
246ff6296a new line " " and italic 2019-10-11 18:34:22 +02:00
1d0b940c14 add sugestions + new translator 2019-10-11 18:15:19 +02:00
4d3fb54925 Merge branch 'lunny/add_ci_badge' of lunny/GitNex into master 2019-10-11 15:44:36 +00:00
cd81ff74bf add mentions 2019-10-11 16:57:53 +02:00
02843b4ca1 Add CI status badge on README 2019-10-11 13:15:05 +00:00
2189bd10bd Merge branch '100-bottomsheet-scroll' of gitnex/GitNex into master 2019-10-11 13:08:57 +00:00
35b9647709 improve bottomsheet with scroll and separater 2019-10-11 16:36:42 +05:00
2d2f486182 Merge branch '88-update-images' of gitnex/GitNex into master 2019-10-10 19:54:37 +00:00
640771d4fa update store images, update app description 2019-10-10 22:38:09 +05:00
2ba8a80b9f Merge branch 'repoSearch' of 6543/GitNex into master 2019-10-10 16:02:04 +00:00
2f55e7f5d1 enable to browse repository 2019-10-10 20:49:12 +05:00
d285115090 reset the adapter on new query 2019-10-10 19:01:15 +05:00
d5cffddc72 Implemented search ui and screen for exploring repositories. 2019-10-10 18:40:43 +05:00
9e2921697b Merge branch 'add-drone-ci' of gitnex/GitNex into master 2019-10-10 07:49:12 +00:00
e868364554 Merge branch 'crowdin_2019-10-10' of gitnex/GitNex into master 2019-10-10 07:48:27 +00:00
88a8303b1c Add Drone CI Config
* testing
       - test
       - build
2019-10-10 03:29:35 +02:00
ac1fc696ea complete france translation 2019-10-10 01:40:54 +02:00
2fe175223c combine commits
* add Explore Function
* define API
* Add Fragment + Code + String
* add to main activity (by @mmarif)
2019-10-10 01:21:34 +02:00
9cab502e84 Merge branch 'mv-org-update-links' of 6543/GitNex into master 2019-10-09 18:40:12 +00:00
88748998b3 update repo links 2019-10-09 16:09:07 +02:00
264ed393cb Merge branch 'readme-add-crowdin' of 6543/GitNex into master 2019-10-08 15:27:27 +00:00
821eef91a3 Merge branch 'crowdin_2019-10-07' of mmarif/GitNex into master 2019-10-08 15:26:56 +00:00
05afc9fc5a Merge branch 'crowdin-add-Persian' of 6543/GitNex into master 2019-10-08 15:26:18 +00:00
4cb6948288 Merge branch 'build-fix' of mmarif/GitNex into master 2019-10-08 14:48:28 +00:00
7012c2587c crowdin update 2019-10-08 02:54:18 +02:00
dbcbd076ea Build Fix 2019-10-08 02:41:39 +02:00
c633b62fdb show screenshots directly 2019-10-07 19:53:41 +02:00
1ce1a15955 mv Translation info (CONTRIBUTE -> README)
wil close https://gitea.com/mmarif/GitNex/issues/108
2019-10-07 19:53:30 +02:00
60b95e3c5d Add first Persian strings
got it from 243e53895b
2019-10-07 12:42:15 +02:00
48fb0cf91c add Persian to settings 2019-10-07 12:41:27 +02:00
8fcb05b0d2 Merge branch 'fixes' of mmarif/GitNex into master 2019-10-07 07:05:36 +00:00
074bbfe3cc Minor translation files fixes 2019-10-07 12:01:04 +05:00
84438b740a Merge branch '43-file-browser' of mmarif/GitNex into master 2019-10-07 06:32:42 +00:00
d4cd16a111 Merge branch 'master' into 43-file-browser 2019-10-07 11:26:24 +05:00
5ed053bba7 Merge branch 'crowdin-add-zh-CN' of mmarif/GitNex into master 2019-10-07 06:05:50 +00:00
598633a20a add first Chinese strings
@lunny thanks
2019-10-06 06:04:00 +02:00
8fe53dfd01 Settings: Languages: add Chinese and sort alphabetic 2019-10-06 06:01:48 +02:00
aadbcbd0c6 Merge branch 'crowdin-add-ar' into master 2019-10-04 19:25:53 +00:00
e3b901741a Add Untranslated Arabic 2019-10-04 20:56:29 +02:00
f8275cd7aa add Arabic to settings 2019-10-04 20:56:28 +02:00
c3afe1044c Merge branch 'crowdin' into master 2019-10-04 18:43:45 +00:00
a6503ba7c4 Crowdin Update 2019-10-04 20:26:20 +02:00
dddc9b0178 smal link fix for Translation 2019-10-04 20:24:44 +02:00
13bc50da40 git ignore crowdin config (crowdin.yml) 2019-10-04 20:23:43 +02:00
b32d291554 Merge branch 'translation-tool' of 6543/GitNex into master 2019-10-04 15:56:43 +00:00
c15e6e99f7 Added Arabic file 2019-10-04 20:46:56 +05:00
1512032f05 move corwdin Link to strings 2019-10-04 17:44:38 +02:00
e32ccde995 add info if lang is not listed 2019-10-04 16:55:09 +02:00
1be577cd3f add ClickListener to open Translation URL 2019-10-04 16:25:27 +02:00
7fa57621d9 change about layout 2019-10-04 16:20:46 +02:00
75ac6ff113 Add Crowdin Badge 2019-10-04 16:08:40 +02:00
9ef04b1287 change CONTRIBUTING.md for Crowdin 2019-10-04 16:08:17 +02:00
8c903b9658 remove some comments 2019-10-04 12:23:56 +05:00
08b8275546 translation files updates 2019-10-04 12:08:21 +05:00
5baacbd801 revert back 2019-10-04 00:21:34 +05:00
56b8b486df Merge branch 'release-2.1' into 43-file-browser 2019-10-04 00:06:03 +05:00
e4ab2f64fc wip, need clean up 2019-10-03 23:50:57 +05:00
345d577fbf Merge branch 'release-2.1' into 43-file-browser 2019-10-03 21:53:38 +05:00
5c9b53f5ab api interface for sub dirs
Signed-off-by: M M Arif <mmarif@swatian.com>
2019-10-03 21:32:09 +05:00
572f93d35c Idea to use breadcrumb 2019-10-03 20:57:49 +05:00
a77716970b update gradle 2019-10-03 12:15:55 +05:00
4d998150a3 click listener checks for file, dir and unknwon files 2019-10-02 23:32:01 +05:00
90df3a31fe Merge branch 'release-2.1' into 43-file-browser 2019-10-02 22:47:46 +05:00
0bcbca8bdc Fix crash from gplay console, app crash when no avatar url node is present in API. old gitea instances. 2019-10-02 22:11:10 +05:00
b90b3c3320 Added reading file contentts 2019-10-02 21:32:59 +05:00
21097da995 filter files and dirs 2019-10-02 18:21:44 +05:00
06b71586c1 Sort by folder 1st approach 2019-10-02 17:58:29 +05:00
d2213c0c14 new file icon 2019-10-02 13:59:34 +05:00
4c3b735534 translation updates 2019-10-02 13:35:14 +05:00
90dce6fff8 added layout, view models, adapter and fragment 2019-10-02 13:30:07 +05:00
d9337a24d3 Fixes since 2.1.0 release, ms progress bar fix, create issue enable fix 2019-10-01 22:45:21 +05:00
45ec660ba1 Merge branch 'master' into 43-file-browser 2019-10-01 21:23:03 +05:00
bb24254e66 added files model 2019-10-01 20:07:37 +05:00
13e69cd09b files tab in repo tabs 2019-10-01 19:48:20 +05:00
71839bcfd6 clean up 2019-10-01 19:35:51 +05:00
108 changed files with 5703 additions and 964 deletions

31
.drone.yml Normal file
View File

@ -0,0 +1,31 @@
---
kind: pipeline
name: gitnex-ci-test
steps:
- name: test
image: nextcloudci/android:android-49
commands:
- ./gradlew test
trigger:
event:
- pull_request
---
kind: pipeline
name: gitnex-ci-build
steps:
- name: build
image: nextcloudci/android:android-49
commands:
- ./gradlew build
trigger:
event:
- push
branch:
- master

3
.gitignore vendored
View File

@ -180,6 +180,9 @@ crashlytics.properties
crashlytics-build.properties
fabric.properties
# Crowdin
crowdin.yml
### AndroidStudio Patch ###
!/gradle/wrapper/gradle-wrapper.jar

View File

@ -1,2 +1,2 @@
# Changelog
[Check out the release notes](https://gitea.com/mmarif/GitNex/releases)
[Check out the release notes](https://gitea.com/gitnex/GitNex/releases)

View File

@ -20,10 +20,3 @@ Before creating an issue please take a moment and search the repository issues(o
In case you want to submit a bug report, please provide as much details as possible to better debug the problem. The important part is how to reproduce the bug and steps to reproduce are appreciated.
**Note:** Please contact the project directly via email(gitnex@swatian.com) if have to share sensitive and security related details.
## Translation
Help us translate GitNex to your native language.
Take a look [here](https://gitea.com/mmarif/GitNex/src/branch/master/app/src/main/res/values/strings.xml) for strings, please ignore the lines with `translatable="false"`. It is recommended to create a Pull Request with your changes.
Check the structure of other languages for example [French](https://gitea.com/mmarif/GitNex/src/branch/master/app/src/main/res/values-fr/strings.xml).

22
CONTRIBUTORS.md Normal file
View File

@ -0,0 +1,22 @@
# Contributors
This part lists all PUBLIC individuals having contributed content to the code.
* M M Arif (mmarif)
* 6543
# Translators
This part lists all PUBLIC individuals having contributed content to the translation.
*Entries are in alphabetical order*
* 6543
* ButterflyOfFire (BoFFire)
* IndeedNotJames
* Lunny Xiao (xiaolunwen)
* mmarif
* Nadezhda Moiseeva (digitalkiller)
* PsychotherapistSam
* Rodion Borisov (vintproykt)
* valeriezhao1013
* Voyvode
**Thank you for all your work** :+1:

View File

@ -1,5 +1,7 @@
[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
[![Release](https://img.shields.io/badge/dynamic/json.svg?label=release&url=https://gitea.com/api/v1/repos/mmarif/GitNex/releases&query=$[0].tag_name)](https://gitea.com/mmarif/GitNex/releases)
[![Release](https://img.shields.io/badge/dynamic/json.svg?label=release&url=https://gitea.com/api/v1/repos/gitnex/GitNex/releases&query=$[0].tag_name)](https://gitea.com/gitnex/GitNex/releases)
[![Build Status](https://drone.gitea.com/api/badges/gitnex/GitNex/status.svg)](https://drone.gitea.com/gitnex/GitNex)
[![Crowdin](https://badges.crowdin.net/gitnex/localized.svg)](https://crowdin.com/project/gitnex)
[<img alt="Become a Patroen" src="https://c5.patreon.com/external/logo/become_a_patron_button@2x.png" height="40"/>](https://www.patreon.com/mmarif)
[<img alt="Donate using Liberapay" src="https://liberapay.com/assets/widgets/donate.svg" height="40"/>](https://liberapay.com/mmarif/donate)
@ -14,12 +16,12 @@ No trackers are used and source code is available here for anyone to audit.
## Downloads
[<img alt='Get it on F-droid' src='https://gitlab.com/fdroid/artwork/raw/master/badge/get-it-on.png' height="80"/>](https://f-droid.org/en/packages/org.mian.gitnex/)
[<img alt='Get it on Google Play' src='https://play.google.com/intl/en_us/badges/images/generic/en_badge_web_generic.png' height="80"/>](https://play.google.com/store/apps/details?id=org.mian.gitnex)
[<img alt='Download APK' src='https://gitnex.com/img/download-apk.png' height="80"/>](https://gitea.com/mmarif/GitNex/releases)
[<img alt='Download APK' src='https://gitnex.com/img/download-apk.png' height="80"/>](https://gitea.com/gitnex/GitNex/releases)
## Note about Gitea version
Please make sure that you are on Gitea **1.9.x** stable release or later. Below this may not work as one would expect because of the newly added objects to the API at later versions. Please consider updating your Gitea server.
Check the versions [compatibility page](https://gitea.com/mmarif/GitNex/wiki/Compatibility) which lists all the supported versions with compatibility ratio.
Check the versions [compatibility page](https://gitea.com/gitnex/GitNex/wiki/Compatibility) which lists all the supported versions with compatibility ratio.
## Build from source
Option 1 - Download the source code, open it in Android Studio and build it there.
@ -33,25 +35,37 @@ Option 2 - Open terminal(Linux) and cd to the project dir. Run `./gradlew build`
- Create repository
- Create organization
- Issues list
- [MANY MORE](https://gitea.com/mmarif/GitNex/wiki/Features)
- [MANY MORE](https://gitea.com/gitnex/GitNex/wiki/Features)
## Contributing
[CONTRIBUTING](https://gitea.com/mmarif/GitNex/src/branch/master/CONTRIBUTING.md)
[CONTRIBUTING](https://gitea.com/gitnex/GitNex/src/branch/master/CONTRIBUTING.md)
## Translation
Help us translate GitNex to your native language.
We use [Crowdin](https://crowdin.com/project/gitnex) for translation.
If your language is not listed, please request [here](https://gitea.com/gitnex/GitNex/issues) to add it to the project.
**Link: https://crowdin.com/project/GitNex**
## Screenshots:
[Screenshots](https://gitea.com/mmarif/GitNex/src/branch/master/fastlane/metadata/android/en-US/images/phoneScreenshots)
<img src="https://gitea.com/gitnex/GitNex/raw/branch/master/fastlane/metadata/android/en-US/images/phoneScreenshots/001.png" alt="001.png" width="200"/> | <img src="https://gitea.com/gitnex/GitNex/raw/branch/master/fastlane/metadata/android/en-US/images/phoneScreenshots/002.png" alt="002.png" width="200"/> | <img src="https://gitea.com/gitnex/GitNex/raw/branch/master/fastlane/metadata/android/en-US/images/phoneScreenshots/003.png" alt="003.png" width="200"/> | <img src="https://gitea.com/gitnex/GitNex/raw/branch/master/fastlane/metadata/android/en-US/images/phoneScreenshots/004.png" alt="004.png" width="200"/>
---|---|---|---
<img src="https://gitea.com/gitnex/GitNex/raw/branch/master/fastlane/metadata/android/en-US/images/phoneScreenshots/005.png" alt="005.png" width="200"/> | <img src="https://gitea.com/gitnex/GitNex/raw/branch/master/fastlane/metadata/android/en-US/images/phoneScreenshots/006.png" alt="006.png" width="200"/> | <img src="https://gitea.com/gitnex/GitNex/raw/branch/master/fastlane/metadata/android/en-US/images/phoneScreenshots/007.png" alt="007.png" width="200"/> | <img src="https://gitea.com/gitnex/GitNex/raw/branch/master/fastlane/metadata/android/en-US/images/phoneScreenshots/008.png" alt="008.png" width="200"/>
## FAQ
[Faq](https://gitea.com/mmarif/GitNex/wiki/FAQ)
[Faq](https://gitea.com/gitnex/GitNex/wiki/FAQ)
## Links
[Website](https://gitnex.com)
[Wiki](https://gitea.com/mmarif/GitNex/wiki/Home)
[Wiki](https://gitea.com/gitnex/GitNex/wiki/Home)
[Website Repository](https://gitlab.com/mmarif4u/gitnex-website)
[Troubleshoot Guide](https://gitea.com/mmarif/GitNex/wiki/Troubleshoot-Guide)
[Troubleshoot Guide](https://gitea.com/gitnex/GitNex/wiki/Troubleshoot-Guide)
## Thanks
Thanks to all the open source libraries, contributors and donators.
@ -69,5 +83,6 @@ Open source libraries
- Abumoallim/android-multi-select-dialog
- Pes/materialcolorpicker
- Hendraanggrian/socialview
- Fython/BreadcrumbsView
[Follow me on Fediverse - mastodon.social/@mmarif](https://mastodon.social/@mmarif)

View File

@ -6,8 +6,8 @@ android {
applicationId "org.mian.gitnex"
minSdkVersion 21
targetSdkVersion 28
versionCode 63
versionName "2.1.3"
versionCode 72
versionName "2.2.2"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
@ -23,12 +23,12 @@ android {
}
dependencies {
def lifecycle_version = "2.2.0-alpha05"
final def markwon_version = "4.1.1"
def lifecycle_version = "2.2.0-beta01"
final def markwon_version = "4.1.1"
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'com.google.android.material:material:1.1.0-alpha10'
implementation 'com.google.android.material:material:1.1.0-beta01'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
testImplementation 'junit:junit:4.12'
@ -68,4 +68,6 @@ dependencies {
implementation "androidx.lifecycle:lifecycle-extensions:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version"
implementation "com.github.HamidrezaAmz:BreadcrumbsView:0.2.9"
}

View File

@ -11,8 +11,11 @@
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".activities.NewFileActivity"
android:name=".activities.FileViewActivity"
android:theme="@style/AppTheme.NoActionBar"></activity>
<activity
android:name=".activities.NewFileActivity"
android:theme="@style/AppTheme.NoActionBar" />
<activity
android:name=".activities.RepoWatchersActivity"
android:theme="@style/AppTheme.NoActionBar" />
@ -64,8 +67,8 @@
<activity android:name=".activities.NewOrganizationActivity" />
<activity android:name=".activities.OpenRepoInBrowserActivity" />
</application>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
</manifest>

View File

@ -0,0 +1,280 @@
package org.mian.gitnex.actions;
import android.content.Context;
import android.util.Log;
import androidx.annotation.NonNull;
import com.google.gson.JsonElement;
import org.mian.gitnex.R;
import org.mian.gitnex.clients.RetrofitClient;
import org.mian.gitnex.helpers.AlertDialogs;
import org.mian.gitnex.helpers.Authorization;
import org.mian.gitnex.helpers.Toasty;
import org.mian.gitnex.util.TinyDB;
import retrofit2.Call;
import retrofit2.Callback;
/**
* Author M M Arif
*/
public class RepositoryActions {
public static void starRepository(final Context context) {
final TinyDB tinyDb = new TinyDB(context);
final String instanceUrl = tinyDb.getString("instanceUrl");
final String loginUid = tinyDb.getString("loginUid");
final String instanceToken = "token " + tinyDb.getString(loginUid + "-token");
String repoFullName = tinyDb.getString("repoFullName");
String[] parts = repoFullName.split("/");
final String repoOwner = parts[0];
final String repoName = parts[1];
Call<JsonElement> call;
call = RetrofitClient
.getInstance(instanceUrl)
.getApiInterface()
.starRepository(Authorization.returnAuthentication(context, loginUid, instanceToken), repoOwner, repoName);
call.enqueue(new Callback<JsonElement>() {
@Override
public void onResponse(@NonNull Call<JsonElement> call, @NonNull retrofit2.Response<JsonElement> response) {
if(response.isSuccessful()) {
if(response.code() == 204) {
tinyDb.putBoolean("repoCreated", true);
Toasty.info(context, context.getString(R.string.starRepositorySuccess));
}
}
else if(response.code() == 401) {
AlertDialogs.authorizationTokenRevokedDialog(context, context.getResources().getString(R.string.alertDialogTokenRevokedTitle),
context.getResources().getString(R.string.alertDialogTokenRevokedMessage),
context.getResources().getString(R.string.alertDialogTokenRevokedCopyNegativeButton),
context.getResources().getString(R.string.alertDialogTokenRevokedCopyPositiveButton));
}
else if(response.code() == 403) {
Toasty.info(context, context.getString(R.string.authorizeError));
}
else if(response.code() == 404) {
Toasty.info(context, context.getString(R.string.apiNotFound));
}
else {
Toasty.info(context, context.getString(R.string.genericError));
}
}
@Override
public void onFailure(@NonNull Call<JsonElement> call, @NonNull Throwable t) {
Log.e("onFailure", t.toString());
}
});
}
public static void unStarRepository(final Context context) {
final TinyDB tinyDb = new TinyDB(context);
final String instanceUrl = tinyDb.getString("instanceUrl");
final String loginUid = tinyDb.getString("loginUid");
final String instanceToken = "token " + tinyDb.getString(loginUid + "-token");
String repoFullName = tinyDb.getString("repoFullName");
String[] parts = repoFullName.split("/");
final String repoOwner = parts[0];
final String repoName = parts[1];
Call<JsonElement> call;
call = RetrofitClient
.getInstance(instanceUrl)
.getApiInterface()
.unStarRepository(Authorization.returnAuthentication(context, loginUid, instanceToken), repoOwner, repoName);
call.enqueue(new Callback<JsonElement>() {
@Override
public void onResponse(@NonNull Call<JsonElement> call, @NonNull retrofit2.Response<JsonElement> response) {
if(response.isSuccessful()) {
if(response.code() == 204) {
tinyDb.putBoolean("repoCreated", true);
Toasty.info(context, context.getString(R.string.unStarRepositorySuccess));
}
}
else if(response.code() == 401) {
AlertDialogs.authorizationTokenRevokedDialog(context, context.getResources().getString(R.string.alertDialogTokenRevokedTitle),
context.getResources().getString(R.string.alertDialogTokenRevokedMessage),
context.getResources().getString(R.string.alertDialogTokenRevokedCopyNegativeButton),
context.getResources().getString(R.string.alertDialogTokenRevokedCopyPositiveButton));
}
else if(response.code() == 403) {
Toasty.info(context, context.getString(R.string.authorizeError));
}
else if(response.code() == 404) {
Toasty.info(context, context.getString(R.string.apiNotFound));
}
else {
Toasty.info(context, context.getString(R.string.genericError));
}
}
@Override
public void onFailure(@NonNull Call<JsonElement> call, @NonNull Throwable t) {
Log.e("onFailure", t.toString());
}
});
}
public static void watchRepository(final Context context) {
final TinyDB tinyDb = new TinyDB(context);
final String instanceUrl = tinyDb.getString("instanceUrl");
final String loginUid = tinyDb.getString("loginUid");
final String instanceToken = "token " + tinyDb.getString(loginUid + "-token");
String repoFullName = tinyDb.getString("repoFullName");
String[] parts = repoFullName.split("/");
final String repoOwner = parts[0];
final String repoName = parts[1];
Call<JsonElement> call;
call = RetrofitClient
.getInstance(instanceUrl)
.getApiInterface()
.watchRepository(Authorization.returnAuthentication(context, loginUid, instanceToken), repoOwner, repoName);
call.enqueue(new Callback<JsonElement>() {
@Override
public void onResponse(@NonNull Call<JsonElement> call, @NonNull retrofit2.Response<JsonElement> response) {
if(response.isSuccessful()) {
if(response.code() == 200) {
tinyDb.putBoolean("repoCreated", true);
Toasty.info(context, context.getString(R.string.watchRepositorySuccess));
}
}
else if(response.code() == 401) {
AlertDialogs.authorizationTokenRevokedDialog(context, context.getResources().getString(R.string.alertDialogTokenRevokedTitle),
context.getResources().getString(R.string.alertDialogTokenRevokedMessage),
context.getResources().getString(R.string.alertDialogTokenRevokedCopyNegativeButton),
context.getResources().getString(R.string.alertDialogTokenRevokedCopyPositiveButton));
}
else if(response.code() == 403) {
Toasty.info(context, context.getString(R.string.authorizeError));
}
else if(response.code() == 404) {
Toasty.info(context, context.getString(R.string.apiNotFound));
}
else {
Toasty.info(context, context.getString(R.string.genericError));
}
}
@Override
public void onFailure(@NonNull Call<JsonElement> call, @NonNull Throwable t) {
Log.e("onFailure", t.toString());
}
});
}
public static void unWatchRepository(final Context context) {
final TinyDB tinyDb = new TinyDB(context);
final String instanceUrl = tinyDb.getString("instanceUrl");
final String loginUid = tinyDb.getString("loginUid");
final String instanceToken = "token " + tinyDb.getString(loginUid + "-token");
String repoFullName = tinyDb.getString("repoFullName");
String[] parts = repoFullName.split("/");
final String repoOwner = parts[0];
final String repoName = parts[1];
Call<JsonElement> call;
call = RetrofitClient
.getInstance(instanceUrl)
.getApiInterface()
.unWatchRepository(Authorization.returnAuthentication(context, loginUid, instanceToken), repoOwner, repoName);
call.enqueue(new Callback<JsonElement>() {
@Override
public void onResponse(@NonNull Call<JsonElement> call, @NonNull retrofit2.Response<JsonElement> response) {
if(response.code() == 204) {
tinyDb.putBoolean("repoCreated", true);
Toasty.info(context, context.getString(R.string.unWatchRepositorySuccess));
}
else if(response.code() == 401) {
AlertDialogs.authorizationTokenRevokedDialog(context, context.getResources().getString(R.string.alertDialogTokenRevokedTitle),
context.getResources().getString(R.string.alertDialogTokenRevokedMessage),
context.getResources().getString(R.string.alertDialogTokenRevokedCopyNegativeButton),
context.getResources().getString(R.string.alertDialogTokenRevokedCopyPositiveButton));
}
else if(response.code() == 403) {
Toasty.info(context, context.getString(R.string.authorizeError));
}
else if(response.code() == 404) {
Toasty.info(context, context.getString(R.string.apiNotFound));
}
else {
Toasty.info(context, context.getString(R.string.genericError));
}
}
@Override
public void onFailure(@NonNull Call<JsonElement> call, @NonNull Throwable t) {
Log.e("onFailure", t.toString());
}
});
}
}

View File

@ -0,0 +1,149 @@
package org.mian.gitnex.activities;
import android.content.Context;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import org.mian.gitnex.R;
import org.mian.gitnex.clients.RetrofitClient;
import org.mian.gitnex.helpers.AlertDialogs;
import org.mian.gitnex.helpers.Toasty;
import org.mian.gitnex.models.Files;
import org.mian.gitnex.util.AppUtil;
import org.mian.gitnex.util.TinyDB;
import retrofit2.Call;
import retrofit2.Callback;
/**
* Author M M Arif
*/
public class FileViewActivity extends AppCompatActivity {
private View.OnClickListener onClickListener;
private TextView singleFileContents;
final Context ctx = this;
private ProgressBar mProgressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_file_view);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
final TinyDB tinyDb = new TinyDB(getApplicationContext());
String repoFullName = tinyDb.getString("repoFullName");
String[] parts = repoFullName.split("/");
final String repoOwner = parts[0];
final String repoName = parts[1];
final String instanceUrl = tinyDb.getString("instanceUrl");
final String loginUid = tinyDb.getString("loginUid");
final String instanceToken = "token " + tinyDb.getString(loginUid + "-token");
boolean connToInternet = AppUtil.haveNetworkConnection(getApplicationContext());
ImageView closeActivity = findViewById(R.id.close);
singleFileContents = findViewById(R.id.singleFileContents);
singleFileContents.setVisibility(View.GONE);
mProgressBar = findViewById(R.id.progress_bar);
String singleFileName = getIntent().getStringExtra("singleFileName");
TextView toolbar_title = findViewById(R.id.toolbar_title);
toolbar_title.setMovementMethod(new ScrollingMovementMethod());
toolbar_title.setText(singleFileName);
initCloseListener();
closeActivity.setOnClickListener(onClickListener);
if(connToInternet) {
getSingleFileContents(instanceUrl, instanceToken, repoOwner, repoName, singleFileName);
}
else {
Toasty.info(getApplicationContext(), getString(R.string.checkNetConnection));
}
}
private void getSingleFileContents(String instanceUrl, String token, final String owner, String repo, final String filename) {
Call<Files> call = RetrofitClient
.getInstance(instanceUrl)
.getApiInterface()
.getSingleFileContents(token, owner, repo, filename);
call.enqueue(new Callback<Files>() {
@Override
public void onResponse(@NonNull Call<Files> call, @NonNull retrofit2.Response<Files> response) {
if (response.code() == 200) {
AppUtil appUtil = new AppUtil();
assert response.body() != null;
if(!response.body().getContent().equals("")) {
singleFileContents.setVisibility(View.VISIBLE);
mProgressBar.setVisibility(View.GONE);
singleFileContents.setText(appUtil.decodeBase64(response.body().getContent()));
}
else {
singleFileContents.setText("");
mProgressBar.setVisibility(View.GONE);
}
}
else if(response.code() == 401) {
AlertDialogs.authorizationTokenRevokedDialog(ctx, getResources().getString(R.string.alertDialogTokenRevokedTitle),
getResources().getString(R.string.alertDialogTokenRevokedMessage),
getResources().getString(R.string.alertDialogTokenRevokedCopyNegativeButton),
getResources().getString(R.string.alertDialogTokenRevokedCopyPositiveButton));
}
else if(response.code() == 403) {
Toasty.info(ctx, ctx.getString(R.string.authorizeError));
}
else if(response.code() == 404) {
Toasty.info(ctx, ctx.getString(R.string.apiNotFound));
}
else {
Toasty.info(getApplicationContext(), getString(R.string.labelGeneralError));
}
}
@Override
public void onFailure(@NonNull Call<Files> call, @NonNull Throwable t) {
Log.e("onFailure", t.toString());
}
});
}
private void initCloseListener() {
onClickListener = new View.OnClickListener() {
@Override
public void onClick(View view) {
getIntent().removeExtra("singleFileName");
finish();
}
};
}
}

View File

@ -21,6 +21,7 @@ import com.squareup.picasso.Picasso;
import org.mian.gitnex.R;
import org.mian.gitnex.clients.RetrofitClient;
import org.mian.gitnex.fragments.AboutFragment;
import org.mian.gitnex.fragments.ExploreRepositoriesFragment;
import org.mian.gitnex.fragments.MyRepositoriesFragment;
import org.mian.gitnex.fragments.NavSubMenuBottomSheetFragment;
import org.mian.gitnex.fragments.OrganizationsFragment;
@ -278,6 +279,11 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new StarredRepositoriesFragment()).commit();
break;
case R.id.nav_explore:
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
new ExploreRepositoriesFragment()).commit();
break;
}
drawer.closeDrawer(GravityCompat.START);
@ -354,9 +360,9 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
userAvatar = hView.findViewById(R.id.userAvatar);
if (!Objects.requireNonNull(userDetails).getAvatar().equals("")) {
Picasso.get().load(userDetails.getAvatar()).transform(new RoundedTransformation(8, 0)).resize(120, 120).centerCrop().into(userAvatar);
Picasso.get().load(userDetails.getAvatar()).transform(new RoundedTransformation(8, 0)).resize(160, 160).centerCrop().into(userAvatar);
} else {
userAvatar.setImageResource(R.mipmap.ic_launcher_round);
userAvatar.setImageResource(R.mipmap.app_logo_round);
}
userFullName = hView.findViewById(R.id.userFullname);

View File

@ -1,6 +1,7 @@
package org.mian.gitnex.activities;
import com.google.android.material.tabs.TabLayout;
import com.google.gson.JsonElement;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
@ -26,6 +27,7 @@ import org.mian.gitnex.clients.RetrofitClient;
import org.mian.gitnex.fragments.BranchesFragment;
import org.mian.gitnex.fragments.ClosedIssuesFragment;
import org.mian.gitnex.fragments.CollaboratorsFragment;
import org.mian.gitnex.fragments.FilesFragment;
import org.mian.gitnex.fragments.IssuesFragment;
import org.mian.gitnex.fragments.LabelsFragment;
import org.mian.gitnex.fragments.MilestonesFragment;
@ -34,6 +36,7 @@ import org.mian.gitnex.fragments.RepoBottomSheetFragment;
import org.mian.gitnex.fragments.RepoInfoFragment;
import org.mian.gitnex.helpers.Authorization;
import org.mian.gitnex.models.UserRepositories;
import org.mian.gitnex.models.WatchRepository;
import org.mian.gitnex.util.AppUtil;
import org.mian.gitnex.util.TinyDB;
import java.util.Objects;
@ -87,15 +90,18 @@ public class RepoDetailActivity extends AppCompatActivity implements RepoBottomS
if(!tinyDb.getString("issuesCounter").isEmpty()) {
getRepoInfo(instanceUrl, Authorization.returnAuthentication(getApplicationContext(), loginUid, instanceToken), repoOwner, repoName1);
}
Objects.requireNonNull(tabLayout.getTabAt(1)).setCustomView(tabHeader);
Objects.requireNonNull(tabLayout.getTabAt(2)).setCustomView(tabHeader);
TabLayout.Tab tabOpenIssues = tabLayout.getTabAt(1);
TabLayout.Tab tabOpenIssues = tabLayout.getTabAt(2);
ColorStateList textColor = tabLayout.getTabTextColors();
assert tabOpenIssues != null;
TextView openIssueTabView = Objects.requireNonNull(tabOpenIssues.getCustomView()).findViewById(R.id.counterBadgeText);
openIssueTabView.setTextColor(textColor);
}
checkRepositoryStarStatus(instanceUrl, Authorization.returnAuthentication(getApplicationContext(), loginUid, instanceToken), repoOwner, repoName1);
checkRepositoryWatchStatus(instanceUrl, Authorization.returnAuthentication(getApplicationContext(), loginUid, instanceToken), repoOwner, repoName1);
}
@Override
@ -199,21 +205,23 @@ public class RepoDetailActivity extends AppCompatActivity implements RepoBottomS
switch (position) {
case 0: // information
return RepoInfoFragment.newInstance(repoOwner, repoName);
case 1: // issues
case 1: // files
return FilesFragment.newInstance(repoOwner, repoName);
case 2: // issues
fragment = new IssuesFragment();
break;
case 2: // closed issues
case 3: // closed issues
fragment = new ClosedIssuesFragment();
break;
case 3: // milestones
case 4: // milestones
return MilestonesFragment.newInstance(repoOwner, repoName);
case 4: // labels
case 5: // labels
return LabelsFragment.newInstance(repoOwner, repoName);
case 5: // branches
case 6: // branches
return BranchesFragment.newInstance(repoOwner, repoName);
case 6: // releases
case 7: // releases
return ReleasesFragment.newInstance(repoOwner, repoName);
case 7: // collaborators
case 8: // collaborators
return CollaboratorsFragment.newInstance(repoOwner, repoName);
}
return fragment;
@ -221,7 +229,7 @@ public class RepoDetailActivity extends AppCompatActivity implements RepoBottomS
@Override
public int getCount() {
return 8;
return 9;
}
}
@ -264,4 +272,67 @@ public class RepoDetailActivity extends AppCompatActivity implements RepoBottomS
}
private void checkRepositoryStarStatus(String instanceUrl, String instanceToken, final String owner, String repo) {
Call<JsonElement> call;
call = RetrofitClient
.getInstance(instanceUrl)
.getApiInterface()
.checkRepoStarStatus(instanceToken, owner, repo);
call.enqueue(new Callback<JsonElement>() {
@Override
public void onResponse(@NonNull Call<JsonElement> call, @NonNull retrofit2.Response<JsonElement> response) {
TinyDB tinyDb = new TinyDB(getApplicationContext());
tinyDb.putInt("repositoryStarStatus", response.code());
}
@Override
public void onFailure(@NonNull Call<JsonElement> call, @NonNull Throwable t) {
Log.e("onFailure", t.toString());
}
});
}
private void checkRepositoryWatchStatus(String instanceUrl, String instanceToken, final String owner, String repo) {
Call<WatchRepository> call;
call = RetrofitClient
.getInstance(instanceUrl)
.getApiInterface()
.checkRepoWatchStatus(instanceToken, owner, repo);
call.enqueue(new Callback<WatchRepository>() {
@Override
public void onResponse(@NonNull Call<WatchRepository> call, @NonNull retrofit2.Response<WatchRepository> response) {
TinyDB tinyDb = new TinyDB(getApplicationContext());
if(response.code() == 200) {
assert response.body() != null;
if(response.body().getSubscribed()) {
tinyDb.putBoolean("repositoryWatchStatus", true);
}
}
else {
tinyDb.putBoolean("repositoryWatchStatus", false);
}
}
@Override
public void onFailure(@NonNull Call<WatchRepository> call, @NonNull Throwable t) {
Log.e("onFailure", t.toString());
}
});
}
}

View File

@ -0,0 +1,216 @@
package org.mian.gitnex.adapters;
import android.content.Context;
import android.content.Intent;
import android.graphics.Typeface;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.view.ContextThemeWrapper;
import androidx.appcompat.widget.PopupMenu;
import androidx.recyclerview.widget.RecyclerView;
import com.amulyakhare.textdrawable.TextDrawable;
import com.amulyakhare.textdrawable.util.ColorGenerator;
import com.squareup.picasso.Picasso;
import org.mian.gitnex.R;
import org.mian.gitnex.activities.OpenRepoInBrowserActivity;
import org.mian.gitnex.activities.RepoDetailActivity;
import org.mian.gitnex.activities.RepoStargazersActivity;
import org.mian.gitnex.activities.RepoWatchersActivity;
import org.mian.gitnex.helpers.RoundedTransformation;
import org.mian.gitnex.models.UserRepositories;
import org.mian.gitnex.util.TinyDB;
import java.lang.reflect.Field;
import java.util.List;
/**
* Author M M Arif
*/
public class ExploreRepositoriesAdapter extends RecyclerView.Adapter<ExploreRepositoriesAdapter.ReposSearchViewHolder> {
private List<UserRepositories> searchedReposList;
private Context mCtx;
public ExploreRepositoriesAdapter(List<UserRepositories> dataList, Context mCtx) {
this.mCtx = mCtx;
this.searchedReposList = dataList;
}
static class ReposSearchViewHolder extends RecyclerView.ViewHolder {
private ImageView image;
private TextView mTextView1;
private TextView mTextView2;
private TextView fullName;
private ImageView repoPrivatePublic;
private TextView repoStars;
private TextView repoForks;
private TextView repoOpenIssuesCount;
private ReposSearchViewHolder(View itemView) {
super(itemView);
mTextView1 = itemView.findViewById(R.id.repoName);
mTextView2 = itemView.findViewById(R.id.repoDescription);
image = itemView.findViewById(R.id.imageAvatar);
fullName = itemView.findViewById(R.id.repoFullName);
repoPrivatePublic = itemView.findViewById(R.id.imageRepoType);
repoStars = itemView.findViewById(R.id.repoStars);
repoForks = itemView.findViewById(R.id.repoForks);
repoOpenIssuesCount = itemView.findViewById(R.id.repoOpenIssuesCount);
ImageView reposDropdownMenu = itemView.findViewById(R.id.reposDropdownMenu);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Context context = v.getContext();
TextView repoFullName = v.findViewById(R.id.repoFullName);
Intent intent = new Intent(context, RepoDetailActivity.class);
intent.putExtra("repoFullName", repoFullName.getText().toString());
TinyDB tinyDb = new TinyDB(context);
tinyDb.putString("repoFullName", repoFullName.getText().toString());
tinyDb.putBoolean("resumeIssues", true);
context.startActivity(intent);
}
});
reposDropdownMenu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Context context = v.getContext();
Context context_ = new ContextThemeWrapper(context, R.style.popupMenuStyle);
PopupMenu popupMenu = new PopupMenu(context_, v);
popupMenu.inflate(R.menu.repo_dotted_list_menu);
Object menuHelper;
Class[] argTypes;
try {
Field fMenuHelper = PopupMenu.class.getDeclaredField("mPopup");
fMenuHelper.setAccessible(true);
menuHelper = fMenuHelper.get(popupMenu);
argTypes = new Class[] { boolean.class };
menuHelper.getClass().getDeclaredMethod("setForceShowIcon",
argTypes).invoke(menuHelper, true);
} catch (Exception e) {
popupMenu.show();
return;
}
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.repoStargazers:
Intent intent = new Intent(context, RepoStargazersActivity.class);
intent.putExtra("repoFullNameForStars", fullName.getText());
context.startActivity(intent);
break;
case R.id.repoWatchers:
Intent intentW = new Intent(context, RepoWatchersActivity.class);
intentW.putExtra("repoFullNameForWatchers", fullName.getText());
context.startActivity(intentW);
break;
case R.id.repoOpenInBrowser:
Intent intentOpenInBrowser = new Intent(context, OpenRepoInBrowserActivity.class);
intentOpenInBrowser.putExtra("repoFullNameBrowser", fullName.getText());
context.startActivity(intentOpenInBrowser);
break;
}
return false;
}
});
popupMenu.show();
}
});
}
}
@NonNull
@Override
public ExploreRepositoriesAdapter.ReposSearchViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.repos_list, parent, false);
return new ExploreRepositoriesAdapter.ReposSearchViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull final ExploreRepositoriesAdapter.ReposSearchViewHolder holder, int position) {
final UserRepositories currentItem = searchedReposList.get(position);
holder.mTextView2.setVisibility(View.GONE);
ColorGenerator generator = ColorGenerator.MATERIAL;
int color = generator.getColor(currentItem.getName());
String firstCharacter = String.valueOf(currentItem.getName().charAt(0));
TextDrawable drawable = TextDrawable.builder()
.beginConfig()
.useFont(Typeface.DEFAULT)
.fontSize(18)
.toUpperCase()
.width(28)
.height(28)
.endConfig()
.buildRoundRect(firstCharacter, color, 3);
if (currentItem.getAvatar_url() != null) {
if (!currentItem.getAvatar_url().equals("")) {
Picasso.get().load(currentItem.getAvatar_url()).transform(new RoundedTransformation(8, 0)).resize(120, 120).centerCrop().into(holder.image);
} else {
holder.image.setImageDrawable(drawable);
}
}
else {
holder.image.setImageDrawable(drawable);
}
holder.mTextView1.setText(currentItem.getName());
if (!currentItem.getDescription().equals("")) {
holder.mTextView2.setVisibility(View.VISIBLE);
holder.mTextView2.setText(currentItem.getDescription());
}
holder.fullName.setText(currentItem.getFullname());
if(currentItem.getPrivateFlag()) {
holder.repoPrivatePublic.setImageResource(R.drawable.ic_lock_bold);
}
else {
holder.repoPrivatePublic.setImageResource(R.drawable.ic_public);
}
holder.repoStars.setText(currentItem.getStars_count());
holder.repoForks.setText(currentItem.getForks_count());
holder.repoOpenIssuesCount.setText(currentItem.getOpen_issues_count());
}
@Override
public int getItemCount() {
return searchedReposList.size();
}
}

View File

@ -0,0 +1,212 @@
package org.mian.gitnex.adapters;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import org.mian.gitnex.R;
import org.mian.gitnex.helpers.Toasty;
import org.mian.gitnex.models.Files;
import java.util.ArrayList;
import java.util.List;
/**
* Author M M Arif
*/
public class FilesAdapter extends RecyclerView.Adapter<FilesAdapter.FilesViewHolder> implements Filterable {
private List<Files> filesList;
private Context mCtx;
private List<Files> filesListFull;
private FilesAdapterListener filesListener;
public interface FilesAdapterListener {
void onClickDir(String str);
void onClickFile(String str);
}
class FilesViewHolder extends RecyclerView.ViewHolder {
private ImageView fileTypeImage;
private TextView fileName;
private TextView fileType;
private FilesViewHolder(View itemView) {
super(itemView);
fileName = itemView.findViewById(R.id.fileName);
fileTypeImage = itemView.findViewById(R.id.fileImage);
fileType = itemView.findViewById(R.id.fileType);
//ImageView filesDropdownMenu = itemView.findViewById(R.id.filesDropdownMenu);
fileName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Context context = v.getContext();
if(fileType.getText().toString().equals("file")) {
filesListener.onClickFile(fileName.getText().toString());
}
else if(fileType.getText().toString().equals("dir")) {
filesListener.onClickDir(fileName.getText().toString());
}
else {
Toasty.info(context, context.getString(R.string.filesGenericError));
}
}
});
/*filesDropdownMenu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final Context context = v.getContext();
Context context_ = new ContextThemeWrapper(context, R.style.popupMenuStyle);
PopupMenu popupMenu = new PopupMenu(context_, v);
popupMenu.inflate(R.menu.files_dotted_list_menu);
Object menuHelper;
Class[] argTypes;
try {
Field fMenuHelper = PopupMenu.class.getDeclaredField("mPopup");
fMenuHelper.setAccessible(true);
menuHelper = fMenuHelper.get(popupMenu);
argTypes = new Class[] { boolean.class };
menuHelper.getClass().getDeclaredMethod("setForceShowIcon",
argTypes).invoke(menuHelper, true);
} catch (Exception e) {
popupMenu.show();
return;
}
popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.deleteFile:
Intent intent = new Intent(context, DeleteFileActivity.class);
intent.putExtra("repoFullNameForDeleteFile", fullName.getText());
context.startActivity(intent);
break;
case R.id.editFile:
Intent intentW = new Intent(context, EditFileActivity.class);
intentW.putExtra("repoFullNameForEditFile", fullName.getText());
context.startActivity(intentW);
break;
case R.id.openInBrowser:
Intent intentOpenInBrowser = new Intent(context, OpenFileInBrowserActivity.class);
intentOpenInBrowser.putExtra("fileFullNameBrowser", fullName.getText());
context.startActivity(intentOpenInBrowser);
break;
}
return false;
}
});
popupMenu.show();
}
});*/
}
}
public FilesAdapter(Context mCtx, List<Files> filesListMain, FilesAdapterListener filesListener) {
this.mCtx = mCtx;
this.filesList = filesListMain;
filesListFull = new ArrayList<>(filesList);
this.filesListener = filesListener;
}
@NonNull
@Override
public FilesAdapter.FilesViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.files_list, parent, false);
return new FilesAdapter.FilesViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull FilesAdapter.FilesViewHolder holder, int position) {
Files currentItem = filesList.get(position);
holder.fileType.setText(currentItem.getType());
holder.fileName.setText(currentItem.getName());
if(currentItem.getType().equals("file")) {
holder.fileTypeImage.setImageDrawable(mCtx.getResources().getDrawable(R.drawable.ic_file_new));
}
else if(currentItem.getType().equals("dir")) {
holder.fileTypeImage.setImageDrawable(mCtx.getResources().getDrawable(R.drawable.ic_folder_24));
}
else {
holder.fileTypeImage.setImageDrawable(mCtx.getResources().getDrawable(R.drawable.ic_question_mark_24));
}
}
@Override
public int getItemCount() {
return filesList.size();
}
@Override
public Filter getFilter() {
return filesFilter;
}
private Filter filesFilter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
List<Files> filteredList = new ArrayList<>();
if (constraint == null || constraint.length() == 0) {
filteredList.addAll(filesListFull);
} else {
String filterPattern = constraint.toString().toLowerCase().trim();
for (Files item : filesListFull) {
if (item.getName().toLowerCase().contains(filterPattern) || item.getPath().toLowerCase().contains(filterPattern)) {
filteredList.add(item);
}
}
}
FilterResults results = new FilterResults();
results.values = filteredList;
return results;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
filesList.clear();
filesList.addAll((List) results.values);
notifyDataSetChanged();
}
};
}

View File

@ -77,7 +77,7 @@ public class RepoStargazersAdapter extends BaseAdapter {
private void initData(RepoStargazersAdapter.ViewHolder viewHolder, int position) {
UserInfo currentItem = stargazersList.get(position);
Picasso.get().load(currentItem.getAvatar()).transform(new RoundedTransformation(100, 0)).resize(200, 200).centerCrop().into(viewHolder.memberAvatar);
Picasso.get().load(currentItem.getAvatar()).transform(new RoundedTransformation(8, 0)).resize(180, 180).centerCrop().into(viewHolder.memberAvatar);
if(!currentItem.getFullname().equals("")) {
viewHolder.memberName.setText(currentItem.getFullname());

View File

@ -77,7 +77,7 @@ public class RepoWatchersAdapter extends BaseAdapter {
private void initData(RepoWatchersAdapter.ViewHolder viewHolder, int position) {
UserInfo currentItem = watchersList.get(position);
Picasso.get().load(currentItem.getAvatar()).transform(new RoundedTransformation(100, 0)).resize(200, 200).centerCrop().into(viewHolder.memberAvatar);
Picasso.get().load(currentItem.getAvatar()).transform(new RoundedTransformation(8, 0)).resize(180, 180).centerCrop().into(viewHolder.memberAvatar);
if(!currentItem.getFullname().equals("")) {
viewHolder.memberName.setText(currentItem.getFullname());

View File

@ -49,6 +49,7 @@ public class AboutFragment extends Fragment {
final TextView appVerBuild;
final TextView donationLink;
final TextView donationLinkPatreon;
final TextView translateLink;
final TextView creditsButton;
final TextView sponsorsButton;
final TextView appWebsite;
@ -64,6 +65,7 @@ public class AboutFragment extends Fragment {
creditsButton = v.findViewById(R.id.creditsButton);
donationLink = v.findViewById(R.id.donationLink);
donationLinkPatreon = v.findViewById(R.id.donationLinkPatreon);
translateLink = v.findViewById(R.id.translateLink);
sponsorsButton = v.findViewById(R.id.sponsorsButton);
appWebsite = v.findViewById(R.id.appWebsite);
appRepo = v.findViewById(R.id.appRepo);
@ -90,6 +92,16 @@ public class AboutFragment extends Fragment {
}
});
translateLink.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.setData(Uri.parse(getResources().getString(R.string.crowdInLink)));
startActivity(intent);
}
});
appWebsite.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent();

View File

@ -0,0 +1,194 @@
package org.mian.gitnex.fragments;
import android.content.Context;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import org.mian.gitnex.R;
import org.mian.gitnex.activities.MainActivity;
import org.mian.gitnex.adapters.ExploreRepositoriesAdapter;
import org.mian.gitnex.clients.RetrofitClient;
import org.mian.gitnex.helpers.Authorization;
import org.mian.gitnex.models.ExploreRepositories;
import org.mian.gitnex.models.UserRepositories;
import org.mian.gitnex.util.AppUtil;
import org.mian.gitnex.util.TinyDB;
import java.util.List;
import java.util.Objects;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
/**
+ * Template Author M M Arif
+ * Author 6543
+ */
public class ExploreRepositoriesFragment extends Fragment {
private static String repoNameF = "param2";
private static String repoOwnerF = "param1";
private ProgressBar mProgressBar;
private RecyclerView mRecyclerView;
private TextView noData;
private TextView searchKeyword;
private Boolean repoTypeInclude = true;
private String sort = "updated";
private String order = "asc";
private ExploreRepositoriesAdapter adapter;
private OnFragmentInteractionListener mListener;
public ExploreRepositoriesFragment() {
}
public static ExploreRepositoriesFragment newInstance(String param1, String param2) {
ExploreRepositoriesFragment fragment = new ExploreRepositoriesFragment();
Bundle args = new Bundle();
args.putString(repoOwnerF, param1);
args.putString(repoNameF, param2);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
String repoName = getArguments().getString(repoNameF);
String repoOwner = getArguments().getString(repoOwnerF);
}
}
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
boolean connToInternet = AppUtil.haveNetworkConnection(Objects.requireNonNull(getContext()));
final View v = inflater.inflate(R.layout.fragment_explore_repo, container, false);
//setHasOptionsMenu(true);
((MainActivity) Objects.requireNonNull(getActivity())).setActionBarTitle(getResources().getString(R.string.pageTitleExplore));
TinyDB tinyDb = new TinyDB(getContext());
final String instanceUrl = tinyDb.getString("instanceUrl");
final String loginUid = tinyDb.getString("loginUid");
final String instanceToken = "token " + tinyDb.getString(loginUid + "-token");
searchKeyword = v.findViewById(R.id.searchKeyword);
noData = v.findViewById(R.id.noData);
mProgressBar = v.findViewById(R.id.progress_bar);
mRecyclerView = v.findViewById(R.id.recyclerViewReposSearch);
if(connToInternet) {
searchKeyword.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEND) {
if(!searchKeyword.getText().toString().equals("")) {
mProgressBar.setVisibility(View.VISIBLE);
mRecyclerView.setVisibility(View.GONE);
loadSearchReposList(instanceUrl, instanceToken, loginUid, searchKeyword.getText().toString(), repoTypeInclude, sort, order, getContext());
}
}
return false;
}
});
}
else {
mProgressBar.setVisibility(View.GONE);
}
return v;
}
private void loadSearchReposList(String instanceUrl, String instanceToken, String loginUid, String searchKeyword, Boolean repoTypeInclude, String sort, String order, final Context context) {
Call<ExploreRepositories> call = RetrofitClient
.getInstance(instanceUrl)
.getApiInterface()
.queryRepos(Authorization.returnAuthentication(getContext(), loginUid, instanceToken), searchKeyword, repoTypeInclude, sort, order);
call.enqueue(new Callback<ExploreRepositories>() {
@Override
public void onResponse(@NonNull Call<ExploreRepositories> call, @NonNull Response<ExploreRepositories> response) {
if (response.isSuccessful()) {
assert response.body() != null;
getReposList(response.body().getSearchedData(), context);
} else {
Log.i("onResponse", String.valueOf(response.code()));
}
}
@Override
public void onFailure(@NonNull Call<ExploreRepositories> call, @NonNull Throwable t) {
Log.i("onFailure", t.getMessage());
}
});
}
private void getReposList(List<UserRepositories> dataList, Context context) {
adapter = new ExploreRepositoriesAdapter(dataList, context);
mRecyclerView.setVisibility(View.VISIBLE);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(mRecyclerView.getContext(),
DividerItemDecoration.VERTICAL);
mRecyclerView.addItemDecoration(dividerItemDecoration);
if(adapter.getItemCount() > 0) {
mRecyclerView.setAdapter(adapter);
noData.setVisibility(View.GONE);
mProgressBar.setVisibility(View.GONE);
}
else {
noData.setVisibility(View.VISIBLE);
mProgressBar.setVisibility(View.GONE);
}
}
public void onButtonPressed(Uri uri) {
if (mListener != null) {
mListener.onFragmentInteraction(uri);
}
}
@Override
public void onDetach() {
super.onDetach();
mListener = null;
}
public interface OnFragmentInteractionListener {
void onFragmentInteraction(Uri uri);
}
}

View File

@ -0,0 +1,301 @@
package org.mian.gitnex.fragments;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import org.mian.gitnex.R;
import org.mian.gitnex.activities.FileViewActivity;
import org.mian.gitnex.adapters.FilesAdapter;
import org.mian.gitnex.helpers.Authorization;
import org.mian.gitnex.models.Files;
import org.mian.gitnex.util.AppUtil;
import org.mian.gitnex.util.TinyDB;
import org.mian.gitnex.viewmodels.FilesViewModel;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import moe.feng.common.view.breadcrumbs.BreadcrumbsView;
import moe.feng.common.view.breadcrumbs.DefaultBreadcrumbsCallback;
import moe.feng.common.view.breadcrumbs.model.BreadcrumbItem;
/**
* Author M M Arif
*/
public class FilesFragment extends Fragment implements FilesAdapter.FilesAdapterListener {
private ProgressBar mProgressBar;
private FilesAdapter adapter;
private RecyclerView mRecyclerView;
private TextView noDataFiles;
private LinearLayout filesFrame;
private TextView fileStructure;
private static String repoNameF = "param2";
private static String repoOwnerF = "param1";
private BreadcrumbsView mBreadcrumbsView;
private String repoName;
private String repoOwner;
private OnFragmentInteractionListener mListener;
public FilesFragment() {
}
public static FilesFragment newInstance(String param1, String param2) {
FilesFragment fragment = new FilesFragment();
Bundle args = new Bundle();
args.putString(repoOwnerF, param1);
args.putString(repoNameF, param2);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
repoName = getArguments().getString(repoNameF);
repoOwner = getArguments().getString(repoOwnerF);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_files, container, false);
setHasOptionsMenu(true);
TinyDB tinyDb = new TinyDB(getContext());
final String instanceUrl = tinyDb.getString("instanceUrl");
final String loginUid = tinyDb.getString("loginUid");
final String instanceToken = "token " + tinyDb.getString(loginUid + "-token");
noDataFiles = v.findViewById(R.id.noDataFiles);
filesFrame = v.findViewById(R.id.filesFrame);
fileStructure = v.findViewById(R.id.fileStructure);
mRecyclerView = v.findViewById(R.id.recyclerView);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
DividerItemDecoration dividerItemDecoration = new DividerItemDecoration(mRecyclerView.getContext(),
DividerItemDecoration.VERTICAL);
mRecyclerView.addItemDecoration(dividerItemDecoration);
mProgressBar = v.findViewById(R.id.progress_bar);
mBreadcrumbsView = v.findViewById(R.id.breadcrumbs_view);
mBreadcrumbsView.setItems(new ArrayList<>(Arrays.asList(
BreadcrumbItem.createSimpleItem(getResources().getString(R.string.filesBreadcrumbRoot))
)));
fetchDataAsync(instanceUrl, Authorization.returnAuthentication(getContext(), loginUid, instanceToken), repoOwner, repoName);
return v;
}
@Override
public void onResume() {
super.onResume();
}
private static BreadcrumbItem createItem(String title) {
List<String> list = new ArrayList<>();
list.add(title);
return new BreadcrumbItem(list);
}
@Override
public void onClickDir(String dirName) {
TinyDB tinyDb = new TinyDB(getContext());
final String instanceUrl = tinyDb.getString("instanceUrl");
final String loginUid = tinyDb.getString("loginUid");
final String instanceToken = "token " + tinyDb.getString(loginUid + "-token");
StringBuilder breadcrumbBuilder = new StringBuilder();
breadcrumbBuilder.append(fileStructure.getText().toString()).append("/").append(dirName);
fileStructure.setText(breadcrumbBuilder);
mBreadcrumbsView.addItem(createItem(dirName));
mBreadcrumbsView.setCallback(new DefaultBreadcrumbsCallback<BreadcrumbItem>() {
@Override
public void onNavigateBack(BreadcrumbItem item, int position) {
if(position == 0) {
fetchDataAsync(instanceUrl, Authorization.returnAuthentication(getContext(), loginUid, instanceToken), repoOwner, repoName);
fileStructure.setText("");
return;
}
String filterDir = fileStructure.getText().toString();
String result = filterDir.substring(0, filterDir.indexOf(item.getSelectedItem()));
fileStructure.setText(result + item.getSelectedItem());
fetchDataAsyncSub(instanceUrl, Authorization.returnAuthentication(getContext(), loginUid, instanceToken), repoOwner, repoName, fileStructure.getText().toString());
}
@Override
public void onNavigateNewLocation(BreadcrumbItem newItem, int changedPosition) {
}
});
fetchDataAsyncSub(instanceUrl, Authorization.returnAuthentication(getContext(), loginUid, instanceToken), repoOwner, repoName, fileStructure.getText().toString());
}
@Override
public void onClickFile(String fileName) {
Intent intent = new Intent(getContext(), FileViewActivity.class);
if(!fileStructure.getText().toString().equals("Root")) {
intent.putExtra("singleFileName", fileStructure.getText().toString()+"/"+fileName);
}
else {
intent.putExtra("singleFileName", fileName);
}
Objects.requireNonNull(getContext()).startActivity(intent);
}
private void fetchDataAsync(String instanceUrl, String instanceToken, String owner, String repo) {
mRecyclerView.setVisibility(View.GONE);
mProgressBar.setVisibility(View.VISIBLE);
FilesViewModel filesModel = new ViewModelProvider(this).get(FilesViewModel.class);
filesModel.getFilesList(instanceUrl, instanceToken, owner, repo, getContext()).observe(this, new Observer<List<Files>>() {
@Override
public void onChanged(@Nullable List<Files> filesListMain) {
adapter = new FilesAdapter(getContext(), filesListMain, FilesFragment.this);
mBreadcrumbsView.removeItemAfter(1);
if(adapter.getItemCount() > 0) {
mRecyclerView.setVisibility(View.VISIBLE);
mRecyclerView.setAdapter(adapter);
filesFrame.setVisibility(View.VISIBLE);
noDataFiles.setVisibility(View.GONE);
}
else {
mRecyclerView.setVisibility(View.VISIBLE);
adapter.notifyDataSetChanged();
mRecyclerView.setAdapter(adapter);
filesFrame.setVisibility(View.VISIBLE);
noDataFiles.setVisibility(View.VISIBLE);
}
filesFrame.setVisibility(View.VISIBLE);
mProgressBar.setVisibility(View.GONE);
}
});
}
private void fetchDataAsyncSub(String instanceUrl, String instanceToken, String owner, String repo, String filesDir) {
mRecyclerView.setVisibility(View.GONE);
mProgressBar.setVisibility(View.VISIBLE);
FilesViewModel filesModel2 = new ViewModelProvider(this).get(FilesViewModel.class);
filesModel2.getFilesList2(instanceUrl, instanceToken, owner, repo, filesDir, getContext()).observe(this, new Observer<List<Files>>() {
@Override
public void onChanged(@Nullable List<Files> filesListMain2) {
adapter = new FilesAdapter(getContext(), filesListMain2, FilesFragment.this);
if(adapter.getItemCount() > 0) {
mRecyclerView.setVisibility(View.VISIBLE);
mRecyclerView.setAdapter(adapter);
filesFrame.setVisibility(View.VISIBLE);
noDataFiles.setVisibility(View.GONE);
}
else {
mRecyclerView.setVisibility(View.VISIBLE);
adapter.notifyDataSetChanged();
mRecyclerView.setAdapter(adapter);
filesFrame.setVisibility(View.VISIBLE);
noDataFiles.setVisibility(View.VISIBLE);
}
filesFrame.setVisibility(View.VISIBLE);
mProgressBar.setVisibility(View.GONE);
}
});
}
@Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
boolean connToInternet = AppUtil.haveNetworkConnection(Objects.requireNonNull(getContext()));
inflater.inflate(R.menu.search_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
MenuItem searchItem = menu.findItem(R.id.action_search);
androidx.appcompat.widget.SearchView searchView = (androidx.appcompat.widget.SearchView) searchItem.getActionView();
searchView.setImeOptions(EditorInfo.IME_ACTION_DONE);
searchView.setQueryHint(getContext().getString(R.string.strFilter));
if(!connToInternet) {
return;
}
searchView.setOnQueryTextListener(new androidx.appcompat.widget.SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
if(mRecyclerView.getAdapter() != null) {
adapter.getFilter().filter(newText);
}
return false;
}
});
}
public void onButtonPressed(Uri uri) {
if (mListener != null) {
mListener.onFragmentInteraction(uri);
}
}
@Override
public void onDetach() {
super.onDetach();
mListener = null;
}
public interface OnFragmentInteractionListener {
void onFragmentInteraction(Uri uri);
}
}

View File

@ -89,6 +89,7 @@ public class MyRepositoriesFragment extends Fragment {
final String instanceUrl = tinyDb.getString("instanceUrl");
final String loginUid = tinyDb.getString("loginUid");
final String instanceToken = "token " + tinyDb.getString(loginUid + "-token");
final String userLogin = tinyDb.getString("userLogin");
final SwipeRefreshLayout swipeRefresh = v.findViewById(R.id.pullToRefresh);
@ -140,13 +141,13 @@ public class MyRepositoriesFragment extends Fragment {
@Override
public void run() {
swipeRefresh.setRefreshing(false);
MyRepositoriesViewModel.loadMyReposList(instanceUrl, Authorization.returnAuthentication(getContext(), loginUid, instanceToken), loginUid);
MyRepositoriesViewModel.loadMyReposList(instanceUrl, Authorization.returnAuthentication(getContext(), loginUid, instanceToken), userLogin);
}
}, 50);
}
});
fetchDataAsync(instanceUrl, Authorization.returnAuthentication(getContext(), loginUid, instanceToken), loginUid);
fetchDataAsync(instanceUrl, Authorization.returnAuthentication(getContext(), loginUid, instanceToken), userLogin);
}
else {
@ -164,16 +165,17 @@ public class MyRepositoriesFragment extends Fragment {
final String instanceUrl = tinyDb.getString("instanceUrl");
final String loginUid = tinyDb.getString("loginUid");
final String instanceToken = "token " + tinyDb.getString(loginUid + "-token");
final String userLogin = tinyDb.getString("userLogin");
MyRepositoriesViewModel.loadMyReposList(instanceUrl, Authorization.returnAuthentication(getContext(), loginUid, instanceToken), loginUid);
MyRepositoriesViewModel.loadMyReposList(instanceUrl, Authorization.returnAuthentication(getContext(), loginUid, instanceToken), userLogin);
}
private void fetchDataAsync(String instanceUrl, String instanceToken, String username) {
private void fetchDataAsync(String instanceUrl, String instanceToken, String userLogin) {
MyRepositoriesViewModel myRepoModel = new ViewModelProvider(this).get(MyRepositoriesViewModel.class);
myRepoModel.getCurrentUserRepositories(instanceUrl, instanceToken, username).observe(this, new Observer<List<UserRepositories>>() {
myRepoModel.getCurrentUserRepositories(instanceUrl, instanceToken, userLogin).observe(this, new Observer<List<UserRepositories>>() {
@Override
public void onChanged(@Nullable List<UserRepositories> myReposListMain) {
adapter = new MyReposListAdapter(getContext(), myReposListMain);

View File

@ -8,6 +8,7 @@ import android.view.ViewGroup;
import android.widget.TextView;
import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import org.mian.gitnex.R;
import org.mian.gitnex.actions.RepositoryActions;
import org.mian.gitnex.util.TinyDB;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@ -34,6 +35,10 @@ public class RepoBottomSheetFragment extends BottomSheetDialogFragment {
TextView createRelease = v.findViewById(R.id.createRelease);
TextView openWebRepo = v.findViewById(R.id.openWebRepo);
TextView newFile = v.findViewById(R.id.newFile);
TextView starRepository = v.findViewById(R.id.starRepository);
TextView unStarRepository = v.findViewById(R.id.unStarRepository);
TextView watchRepository = v.findViewById(R.id.watchRepository);
TextView unWatchRepository = v.findViewById(R.id.unWatchRepository);
createLabel.setOnClickListener(new View.OnClickListener() {
@Override
@ -97,6 +102,72 @@ public class RepoBottomSheetFragment extends BottomSheetDialogFragment {
}
});
if(tinyDb.getInt("repositoryStarStatus") == 204) { // star a repo
starRepository.setVisibility(View.GONE);
unStarRepository.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RepositoryActions.unStarRepository(getContext());
tinyDb.putInt("repositoryStarStatus", 404);
dismiss();
}
});
}
else if(tinyDb.getInt("repositoryStarStatus") == 404) {
unStarRepository.setVisibility(View.GONE);
starRepository.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RepositoryActions.starRepository(getContext());
tinyDb.putInt("repositoryStarStatus", 204);
dismiss();
}
});
}
if(tinyDb.getBoolean("repositoryWatchStatus")) { // watch a repo
watchRepository.setVisibility(View.GONE);
unWatchRepository.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RepositoryActions.unWatchRepository(getContext());
tinyDb.putBoolean("repositoryWatchStatus", false);
dismiss();
}
});
}
else {
unWatchRepository.setVisibility(View.GONE);
watchRepository.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
RepositoryActions.watchRepository(getContext());
tinyDb.putBoolean("repositoryWatchStatus", true);
dismiss();
}
});
}
return v;
}

View File

@ -30,7 +30,7 @@ public class SettingsFragment extends Fragment {
private Context ctx = null;
private static String[] langList = {"English", "French", "German", "Russian"};
private static String[] langList = {"Arabic", "Chinese", "English", "Finnish", "French", "German", "Italian", "Persian", "Russian", "Serbian"};
private static int langSelectedChoice = 0;
private static String[] timeList = {"Pretty", "Normal"};
@ -68,7 +68,7 @@ public class SettingsFragment extends Fragment {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_BROWSABLE);
intent.setData(Uri.parse(getResources().getString(R.string.appRepoContributingLink)));
intent.setData(Uri.parse(getResources().getString(R.string.crowdInLink)));
startActivity(intent);
}
});
@ -244,15 +244,33 @@ public class SettingsFragment extends Fragment {
tinyDb.putInt("langId", i);
switch (langList[i]) {
case "Arabic":
tinyDb.putString("locale", "ar");
break;
case "Chinese":
tinyDb.putString("locale", "zh");
break;
case "Finnish":
tinyDb.putString("locale", "fi");
break;
case "French":
tinyDb.putString("locale", "fr");
break;
case "German":
tinyDb.putString("locale", "de");
break;
case "Italian":
tinyDb.putString("locale", "it");
break;
case "Persian":
tinyDb.putString("locale", "fa");
break;
case "Russian":
tinyDb.putString("locale", "ru");
break;
case "Serbian":
tinyDb.putString("locale", "sr");
break;
default:
tinyDb.putString("locale", "en");
break;

View File

@ -19,6 +19,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import android.content.ClipboardManager;
import android.content.ClipData;
import java.util.Objects;
/**
* Author M M Arif
@ -97,7 +98,7 @@ public class SingleIssueBottomSheetFragment extends BottomSheetDialogFragment {
String issueUrl = instanceUrlWithProtocol + "/" + repoFullName + "/issues/" + tinyDB.getString("issueNumber");
// copy to clipboard
ClipboardManager clipboard = (ClipboardManager) getContext().getSystemService(android.content.Context.CLIPBOARD_SERVICE);
ClipboardManager clipboard = (ClipboardManager) Objects.requireNonNull(getContext()).getSystemService(android.content.Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("issueUrl", issueUrl);
clipboard.setPrimaryClip(clip);

View File

@ -3,6 +3,8 @@ package org.mian.gitnex.interfaces;
import com.google.gson.JsonElement;
import org.mian.gitnex.models.AddEmail;
import org.mian.gitnex.models.Branches;
import org.mian.gitnex.models.ExploreRepositories;
import org.mian.gitnex.models.Files;
import org.mian.gitnex.models.NewFile;
import org.mian.gitnex.models.UpdateIssueAssignee;
import org.mian.gitnex.models.UpdateIssueState;
@ -26,6 +28,7 @@ import org.mian.gitnex.models.UserOrganizations;
import org.mian.gitnex.models.UserRepositories;
import org.mian.gitnex.models.UserSearch;
import org.mian.gitnex.models.UserTokens;
import org.mian.gitnex.models.WatchRepository;
import java.util.List;
import retrofit2.Call;
import retrofit2.http.Body;
@ -212,6 +215,36 @@ public interface ApiInterface {
@GET("repos/{owner}/{repo}/subscribers") // get all repo watchers
Call<List<UserInfo>> getRepoWatchers(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName);
@GET("repos/search") // get all the repos which match the query string
Call<ExploreRepositories> queryRepos(@Header("Authorization") String token, @Query("q") String searchKeyword, @Query("private") Boolean repoTypeInclude, @Query("sort") String sort, @Query("order") String order);
@POST("repos/{owner}/{repo}/contents/{file}") // create new file
Call<JsonElement> createNewFile(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("file") String fileName, @Body NewFile jsonStr);
@GET("repos/{owner}/{repo}/contents") // get all the files and dirs of a repository
Call<List<Files>> getFiles(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName);
@GET("repos/{owner}/{repo}/contents/{file}") // get single file contents
Call<Files> getSingleFileContents(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("file") String file);
@GET("repos/{owner}/{repo}/contents/{fileDir}") // get all the sub files and dirs of a repository
Call<List<Files>> getDirFiles(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName, @Path("fileDir") String fileDir);
@GET("user/starred/{owner}/{repo}") // check star status of a repository
Call<JsonElement> checkRepoStarStatus(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName);
@PUT("user/starred/{owner}/{repo}") // star a repository
Call<JsonElement> starRepository(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName);
@DELETE("user/starred/{owner}/{repo}") // un star a repository
Call<JsonElement> unStarRepository(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName);
@GET("repos/{owner}/{repo}/subscription") // check watch status of a repository
Call<WatchRepository> checkRepoWatchStatus(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName);
@PUT("repos/{owner}/{repo}/subscription") // watch a repository
Call<JsonElement> watchRepository(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName);
@DELETE("repos/{owner}/{repo}/subscription") // un watch a repository
Call<JsonElement> unWatchRepository(@Header("Authorization") String token, @Path("owner") String ownerName, @Path("repo") String repoName);
}

View File

@ -0,0 +1,22 @@
package org.mian.gitnex.models;
import java.util.ArrayList;
/**
* Author M M Arif
*/
public class ExploreRepositories {
private ArrayList<UserRepositories> data;
private Boolean ok;
public ArrayList<UserRepositories> getSearchedData() {
return data;
}
public Boolean getOk() {
return ok;
}
}

View File

@ -0,0 +1,74 @@
package org.mian.gitnex.models;
/**
* Author M M Arif
*/
public class Files {
private String name;
private String path;
private String sha;
private String type;
private int size;
private String encoding;
private String content;
private String target;
private String url;
private String html_url;
private String git_url;
private String download_url;
private String submodule_git_url;
public String getName() {
return name;
}
public String getPath() {
return path;
}
public String getSha() {
return sha;
}
public String getType() {
return type;
}
public int getSize() {
return size;
}
public String getEncoding() {
return encoding;
}
public String getContent() {
return content;
}
public String getTarget() {
return target;
}
public String getUrl() {
return url;
}
public String getHtml_url() {
return html_url;
}
public String getGit_url() {
return git_url;
}
public String getDownload_url() {
return download_url;
}
public String getSubmodule_git_url() {
return submodule_git_url;
}
}

View File

@ -0,0 +1,39 @@
package org.mian.gitnex.models;
/**
* Author M M Arif
*/
public class WatchRepository {
private Boolean subscribed;
private Boolean ignored;
private String reason;
private String created_at;
private String url;
private String repository_url;
public Boolean getSubscribed() {
return subscribed;
}
public Boolean getIgnored() {
return ignored;
}
public String getReason() {
return reason;
}
public String getCreated_at() {
return created_at;
}
public String getUrl() {
return url;
}
public String getRepository_url() {
return repository_url;
}
}

View File

@ -0,0 +1,117 @@
package org.mian.gitnex.viewmodels;
import android.content.Context;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
import org.mian.gitnex.R;
import org.mian.gitnex.clients.RetrofitClient;
import org.mian.gitnex.helpers.Toasty;
import org.mian.gitnex.models.Files;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
/**
* Author M M Arif
*/
public class FilesViewModel extends ViewModel {
private static MutableLiveData<List<Files>> filesList;
private static MutableLiveData<List<Files>> filesList2;
public LiveData<List<Files>> getFilesList(String instanceUrl, String token, String owner, String repo, Context ctx) {
filesList = new MutableLiveData<>();
loadFilesList(instanceUrl, token, owner, repo, ctx);
return filesList;
}
private static void loadFilesList(String instanceUrl, String token, String owner, String repo, final Context ctx) {
Call<List<Files>> call = RetrofitClient
.getInstance(instanceUrl)
.getApiInterface()
.getFiles(token, owner, repo);
call.enqueue(new Callback<List<Files>>() {
@Override
public void onResponse(@NonNull Call<List<Files>> call, @NonNull Response<List<Files>> response) {
if (response.isSuccessful()) {
Collections.sort(response.body(), new Comparator<Files>() {
@Override
public int compare(Files byType1, Files byType2) {
return byType1.getType().compareTo(byType2.getType());
}
});
filesList.postValue(response.body());
} else {
Toasty.info(ctx, ctx.getString(R.string.noDataFilesTab));
Log.i("onResponse", String.valueOf(response.code()));
}
}
@Override
public void onFailure(@NonNull Call<List<Files>> call, Throwable t) {
Log.i("onFailure", t.toString());
}
});
}
public LiveData<List<Files>> getFilesList2(String instanceUrl, String token, String owner, String repo, String filesDir, Context ctx) {
filesList2 = new MutableLiveData<>();
loadFilesList2(instanceUrl, token, owner, repo, filesDir, ctx);
return filesList2;
}
private static void loadFilesList2(String instanceUrl, String token, String owner, String repo, String filesDir, final Context ctx) {
Call<List<Files>> call = RetrofitClient
.getInstance(instanceUrl)
.getApiInterface()
.getDirFiles(token, owner, repo, filesDir);
call.enqueue(new Callback<List<Files>>() {
@Override
public void onResponse(@NonNull Call<List<Files>> call, @NonNull Response<List<Files>> response) {
if (response.isSuccessful()) {
Collections.sort(response.body(), new Comparator<Files>() {
@Override
public int compare(Files byType1, Files byType2) {
return byType1.getType().compareTo(byType2.getType());
}
});
filesList2.postValue(response.body());
} else {
Toasty.info(ctx, ctx.getString(R.string.noDataFilesTab));
Log.i("onResponse", String.valueOf(response.code()));
}
}
@Override
public void onFailure(@NonNull Call<List<Files>> call, Throwable t) {
Log.i("onFailure", t.toString());
}
});
}
}

View File

@ -0,0 +1,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:width="512dp"
android:height="512dp"
android:viewportWidth="16"
android:viewportHeight="16"
tools:ignore="VectorRaster">
<path
android:fillColor="#FFFFFF"
android:pathData="m13.707,3.293 l-3,-3c-0.1875,-0.1875 -0.4419,-0.293 -0.707,-0.293h-7c-0.5522,0 -1,0.4478 -1,1v14c0,0.5527 0.4478,1 1,1h10c0.5522,0 1,-0.4473 1,-1v-11c0,-0.2651 -0.1055,-0.5195 -0.293,-0.707zM8,12h-3v-2h3zM11,9h-6v-2h6zM11,4c-0.5523,0 -1,-0.4478 -1,-1v-2l3,3z"/>
</vector>

View File

@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#FFFFFF"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M10,4H4c-1.1,0 -1.99,0.9 -1.99,2L2,18c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2V8c0,-1.1 -0.9,-2 -2,-2h-8l-2,-2z"/>
</vector>

View File

@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#FFFFFF"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,19h-2v-2h2v2zM15.07,11.25l-0.9,0.92C13.45,12.9 13,13.5 13,15h-2v-0.5c0,-1.1 0.45,-2.1 1.17,-2.83l1.24,-1.26c0.37,-0.36 0.59,-0.86 0.59,-1.41 0,-1.1 -0.9,-2 -2,-2s-2,0.9 -2,2L8,9c0,-2.21 1.79,-4 4,-4s4,1.79 4,4c0,0.88 -0.36,1.68 -0.93,2.25z"/>
</vector>

View File

@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#FFFFFF"
android:viewportHeight="24.0" android:viewportWidth="24.0"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FF000000" android:pathData="M22,9.24l-7.19,-0.62L12,2 9.19,8.63 2,9.24l5.46,4.73L5.82,21 12,17.27 18.18,21l-1.63,-7.03L22,9.24zM12,15.4l-3.76,2.27 1,-4.28 -3.32,-2.88 4.38,-0.38L12,6.1l1.71,4.04 4.38,0.38 -3.32,2.88 1,4.28L12,15.4z"/>
</vector>

View File

@ -0,0 +1,6 @@
<vector android:autoMirrored="true" android:height="24dp"
android:viewportHeight="511.999" android:viewportWidth="511.999"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#FFFFFFFF" android:pathData="M508.745,246.041c-4.574,-6.257 -113.557,-153.206 -252.748,-153.206S7.818,239.784 3.249,246.035c-4.332,5.936 -4.332,13.987 0,19.923c4.569,6.257 113.557,153.206 252.748,153.206s248.174,-146.95 252.748,-153.201C513.083,260.028 513.083,251.971 508.745,246.041zM255.997,385.406c-102.529,0 -191.33,-97.533 -217.617,-129.418c26.253,-31.913 114.868,-129.395 217.617,-129.395c102.524,0 191.319,97.516 217.617,129.418C447.361,287.923 358.746,385.406 255.997,385.406z"/>
<path android:fillColor="#FFFFFFFF" android:pathData="M255.997,154.725c-55.842,0 -101.275,45.433 -101.275,101.275s45.433,101.275 101.275,101.275s101.275,-45.433 101.275,-101.275S311.839,154.725 255.997,154.725zM255.997,323.516c-37.23,0 -67.516,-30.287 -67.516,-67.516s30.287,-67.516 67.516,-67.516s67.516,30.287 67.516,67.516S293.227,323.516 255.997,323.516z"/>
</vector>

View File

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@color/colorPrimary">
<com.google.android.material.appbar.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
tools:ignore="UnusedAttribute">
<ImageView
android:id="@+id/close"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_marginRight="15dp"
android:layout_marginLeft="15dp"
android:gravity="center_vertical"
android:contentDescription="@string/close"
android:src="@drawable/ic_close" />
<TextView
android:id="@+id/toolbar_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/defaultFilename"
android:textColor="@color/white"
android:ellipsize="none"
android:scrollbars="horizontal"
android:singleLine="true"
android:layout_marginEnd="20dp"
android:textSize="18sp" />
</androidx.appcompat.widget.Toolbar>
</com.google.android.material.appbar.AppBarLayout>
<LinearLayout
android:layout_marginTop="50dp"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/toastBackground">
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
tools:ignore="UselessParent">
<TextView
android:id="@+id/singleFileContents"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColor="@color/colorWhite"
android:textSize="14sp"
android:padding="15dp"
/>
</ScrollView>
</LinearLayout>
<ProgressBar
android:id="@+id/progress_bar"
style="@style/Base.Widget.AppCompat.ProgressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:indeterminate="true"
android:visibility="visible" />
</RelativeLayout>

View File

@ -22,7 +22,7 @@
android:layout_marginBottom="20dp"
android:baselineAligned="false"
android:contentDescription="@string/app_name"
android:src="@mipmap/app_logo_round" />
android:src="@mipmap/app_logo" />
<LinearLayout
android:layout_width="match_parent"
@ -147,23 +147,13 @@
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/appRepoIssuesText"
android:textColor="@color/colorWhite"
android:textSize="14sp"
android:gravity="center"
android:layout_marginTop="20dp"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/appRepoIssuesLink"
android:text="@string/appRepoLink"
android:textColor="@color/colorWhite"
android:textSize="14sp"
android:gravity="center"
android:autoLink="web"
android:textColorLink="@color/lightBlue"
android:layout_marginTop="20dp"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp" />

View File

@ -39,6 +39,12 @@
android:layout_height="wrap_content"
android:text="@string/tab_text_info" />
<com.google.android.material.tabs.TabItem
android:id="@+id/tabItemFiles"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/tab_text_files" />
<com.google.android.material.tabs.TabItem
android:id="@+id/tabItem2_issues"
android:layout_width="wrap_content"

View File

@ -2,22 +2,35 @@
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="8dp"
android:background="@color/backgroundColor"
android:paddingTop="8dp">
<TextView
android:id="@+id/createNewUser"
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/adminCreateNewUser"
android:drawableStart="@drawable/ic_add_person"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="wrap_content">
<TextView
android:id="@+id/createNewUser"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/adminCreateNewUser"
android:drawableStart="@drawable/ic_add_person"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</LinearLayout>

View File

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayoutFilesFrame"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:fitsSystemWindows="true"
android:orientation="vertical"
android:layout_margin="10dp"
android:theme="@style/AppTheme"
android:background="@color/backgroundColor"
tools:context=".activities.MainActivity">
<TextView
android:id="@+id/fileType"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="invisible"/>
<ImageView
android:id="@+id/fileImage"
android:layout_width="28dp"
android:layout_height="28dp"
android:layout_marginEnd="15dp"
android:contentDescription="@string/repoContentAvatar"
android:src="@drawable/ic_file" />
<LinearLayout
android:id="@+id/infoSection"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toEndOf="@+id/fileImage"
android:orientation="horizontal">
<TextView
android:id="@+id/fileName"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".80"
android:layout_marginBottom="0dp"
android:text="@string/defaultFilename"
android:textColor="@color/white"
android:textSize="16sp" />
<ImageView
android:id="@+id/filesDropdownMenu"
android:layout_width="0dp"
android:layout_weight=".10"
android:layout_height="wrap_content"
android:layout_gravity="end"
android:scaleType="fitEnd"
android:visibility="gone"
android:src="@drawable/ic_dotted_menu_horizontal"
android:contentDescription="@string/menuContentDesc" />
</LinearLayout>
</RelativeLayout>

View File

@ -25,7 +25,7 @@
android:layout_marginTop="20dp"
android:baselineAligned="false"
android:contentDescription="@string/logo"
android:src="@mipmap/app_logo_round" />
android:src="@mipmap/app_logo" />
<TextView
android:id="@+id/appName"
@ -105,8 +105,21 @@
android:gravity="start"
android:autoLink="web"
android:visibility="visible"
android:layout_marginBottom="10dp"
android:textColorLink="@color/lightBlue" />
<TextView
android:id="@+id/translateLink"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:autoLink="web"
android:gravity="start"
android:text="@string/translateText"
android:textColor="@color/lightBlue"
android:textColorLink="@color/lightBlue"
android:textSize="16sp"
android:visibility="visible" />
</LinearLayout>
<LinearLayout

View File

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary"
android:orientation="vertical">
<EditText
android:id="@+id/searchKeyword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:textSize="14sp"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:layout_marginTop="20dp"
android:layout_marginBottom="20dp"
android:inputType="text"
android:background="@drawable/shape_inputs"
android:textColor="@color/white"
android:textColorHint="@color/colorAccent"
android:hint="@string/exploreTextBoxHint"
android:textColorHighlight="@color/white"
android:imeOptions="actionSend" />
<TextView
android:id="@+id/noData"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="15dp"
android:gravity="center"
android:text="@string/noDataFound"
android:textColor="@color/white"
android:textSize="20sp"
android:visibility="gone" />
<ProgressBar
android:id="@+id/progress_bar"
style="@style/Base.Widget.AppCompat.ProgressBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:indeterminate="true"
android:visibility="gone" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerViewReposSearch"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary"
android:layout_marginStart="5dp"
android:layout_marginEnd="5dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="0dp"
android:scrollbars="vertical" />
</LinearLayout>

View File

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
tools:context=".activities.RepoDetailActivity">
<LinearLayout
android:id="@+id/filesFrame"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
>
<TextView
android:id="@+id/fileStructure"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="gone"/>
<moe.feng.common.view.breadcrumbs.BreadcrumbsView
android:id="@+id/breadcrumbs_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:CustomTextSize="16sp"
app:SelectedTextColor="@color/colorAccent"
app:UnSelectedTextColor="@color/lightGray"
android:text="@string/filesBreadcrumbRoot"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/colorPrimary"
android:padding="4dp"
android:scrollbars="vertical" />
<TextView
android:id="@+id/noDataFiles"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="15dp"
android:gravity="center"
android:text="@string/noDataFilesTab"
android:textColor="@color/white"
android:textSize="20sp"
android:visibility="gone" />
</LinearLayout>
<ProgressBar
android:id="@+id/progress_bar"
style="@style/Base.Widget.AppCompat.ProgressBar"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center"
android:indeterminate="true"
android:visibility="gone" />
</LinearLayout>

View File

@ -2,22 +2,35 @@
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="8dp"
android:background="@color/backgroundColor"
android:paddingTop="8dp">
<TextView
android:id="@+id/adminUsers"
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/adminUsers"
android:drawableStart="@drawable/ic_users"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="wrap_content">
<TextView
android:id="@+id/adminUsers"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/adminUsers"
android:drawableStart="@drawable/ic_users"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</LinearLayout>

View File

@ -1,22 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="8dp"
android:background="@color/backgroundColor"
android:paddingTop="8dp">
<TextView
android:id="@+id/createTeam"
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/orgCreateTeam"
android:drawableStart="@drawable/ic_organizations"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="wrap_content">
<TextView
android:id="@+id/createTeam"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/orgCreateTeam"
android:drawableStart="@drawable/ic_organizations"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</LinearLayout>

View File

@ -1,22 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="8dp"
android:background="@color/backgroundColor"
android:paddingTop="8dp">
<TextView
android:id="@+id/addNewEmailAddress"
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/profileCreateNewEmailAddress"
android:drawableStart="@drawable/ic_email"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="wrap_content">
<TextView
android:id="@+id/addNewEmailAddress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/profileCreateNewEmailAddress"
android:drawableStart="@drawable/ic_email"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</LinearLayout>

View File

@ -1,94 +1,160 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="8dp"
android:background="@color/backgroundColor"
android:paddingTop="8dp">
<TextView
android:id="@+id/newFile"
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/pageTitleNewFile"
android:drawableStart="@drawable/ic_file"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
android:layout_height="400dp">
<TextView
android:id="@+id/createNewIssue"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/pageTitleCreateNewIssue"
android:drawableStart="@drawable/ic_issue_open_white"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="wrap_content">
<TextView
android:id="@+id/createNewMilestone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/pageTitleCreateMilestone"
android:drawableStart="@drawable/ic_milestone"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
<TextView
android:id="@+id/newFile"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/pageTitleNewFile"
android:drawableStart="@drawable/ic_file"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
<TextView
android:id="@+id/createLabel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/createLabel"
android:drawableStart="@drawable/ic_label"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
<TextView
android:id="@+id/createNewIssue"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/pageTitleCreateNewIssue"
android:drawableStart="@drawable/ic_issue_open_white"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
<TextView
android:id="@+id/createRelease"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/createRelease"
android:drawableStart="@drawable/ic_new_releases"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
<TextView
android:id="@+id/createNewMilestone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/pageTitleCreateMilestone"
android:drawableStart="@drawable/ic_milestone"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
<TextView
android:id="@+id/addCollaborator"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/addCollaboratorTitle"
android:drawableStart="@drawable/ic_person_filled"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
<TextView
android:id="@+id/createLabel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/createLabel"
android:drawableStart="@drawable/ic_label"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
<TextView
android:id="@+id/openWebRepo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:drawableStart="@drawable/ic_open_in_browser"
android:drawablePadding="24dp"
android:padding="16dp"
android:text="@string/openWebRepo"
android:textColor="@color/white"
android:textSize="16sp" />
<TextView
android:id="@+id/createRelease"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/createRelease"
android:drawableStart="@drawable/ic_new_releases"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
<View style="@style/lineDividerHorizontal" />
<TextView
android:id="@+id/addCollaborator"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/addCollaboratorTitle"
android:drawableStart="@drawable/ic_person_filled"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
<TextView
android:id="@+id/starRepository"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/starRepository"
android:drawableStart="@drawable/ic_star_border_24dp"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
<TextView
android:id="@+id/unStarRepository"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/unStarRepository"
android:drawableStart="@drawable/ic_star"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
<TextView
android:id="@+id/watchRepository"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/watchRepository"
android:drawableStart="@drawable/ic_unwatch"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
<TextView
android:id="@+id/unWatchRepository"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/unWatchRepository"
android:drawableStart="@drawable/ic_watchers"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
<View style="@style/lineDividerHorizontal" />
<TextView
android:id="@+id/openWebRepo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:drawableStart="@drawable/ic_open_in_browser"
android:drawablePadding="24dp"
android:padding="16dp"
android:text="@string/openWebRepo"
android:textColor="@color/white"
android:textSize="16sp" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</LinearLayout>

View File

@ -1,94 +1,112 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="8dp"
android:background="@color/backgroundColor"
android:paddingTop="8dp">
<TextView
android:id="@+id/replyToIssue"
<androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/replyToIssue"
android:drawableStart="@drawable/ic_reply"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
android:layout_height="400dp">
<TextView
android:id="@+id/editIssue"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/editIssue"
android:drawableStart="@drawable/ic_edit"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
<LinearLayout
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="wrap_content">
<TextView
android:id="@+id/addRemoveAssignees"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/addRemoveAssignees"
android:drawableStart="@drawable/ic_person_filled"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
<TextView
android:id="@+id/replyToIssue"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/replyToIssue"
android:drawableStart="@drawable/ic_reply"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
<TextView
android:id="@+id/editLabels"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/singleIssueEditLabels"
android:drawableStart="@drawable/ic_label"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
<TextView
android:id="@+id/editIssue"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/editIssue"
android:drawableStart="@drawable/ic_edit"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
<TextView
android:id="@+id/closeIssue"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/closeIssue"
android:drawableStart="@drawable/ic_done"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
<TextView
android:id="@+id/addRemoveAssignees"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/addRemoveAssignees"
android:drawableStart="@drawable/ic_person_filled"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
<TextView
android:id="@+id/reOpenIssue"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/reOpenIssue"
android:drawableStart="@drawable/ic_reopen"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
<TextView
android:id="@+id/editLabels"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/singleIssueEditLabels"
android:drawableStart="@drawable/ic_label"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
<TextView
android:id="@+id/copyIssueUrl"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:drawableStart="@drawable/ic_content_copy"
android:drawablePadding="24dp"
android:padding="16dp"
android:text="@string/copyIssueUrl"
android:textColor="@color/white"
android:textSize="16sp" />
<View style="@style/lineDividerHorizontal" />
<TextView
android:id="@+id/copyIssueUrl"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:drawableStart="@drawable/ic_content_copy"
android:drawablePadding="24dp"
android:padding="16dp"
android:text="@string/copyIssueUrl"
android:textColor="@color/white"
android:textSize="16sp" />
<View style="@style/lineDividerHorizontal" />
<TextView
android:id="@+id/closeIssue"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/closeIssue"
android:drawableStart="@drawable/ic_done"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
<TextView
android:id="@+id/reOpenIssue"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:text="@string/reOpenIssue"
android:drawableStart="@drawable/ic_reopen"
android:drawablePadding="24dp"
android:textColor="@color/white"
android:textSize="16sp"
android:padding="16dp" />
</LinearLayout>
</androidx.core.widget.NestedScrollView>
</LinearLayout>

View File

@ -5,7 +5,7 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayoutFrame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="0dp"
android:fitsSystemWindows="true"

View File

@ -17,6 +17,9 @@
<item android:id="@+id/nav_repositories"
android:icon="@drawable/ic_repos"
android:title="@string/navRepos" />
<item android:id="@+id/nav_explore"
android:icon="@drawable/ic_search"
android:title="@string/navExplore" />
<item android:id="@+id/nav_profile"
android:icon="@drawable/ic_person_24dp"
android:title="@string/navProfile" />

View File

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>

View File

@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
</adaptive-icon>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

View File

@ -0,0 +1,412 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources>
<!-- menu items -->
<string name="navMyRepos">مستودعاتي</string>
<string name="navStarredRepos">المستودعات المفضلة</string>
<string name="navRepos">المستودعات</string>
<string name="navProfile">الملف التعريفي</string>
<string name="navSettings">الإعدادات</string>
<string name="navOrgs">المنظمات</string>
<string name="navAbout">عن التطبيق</string>
<string name="navRate">Rate GitNex</string>
<string name="navLogout">الخروج</string>
<string name="navExplore">استكشف</string>
<!-- menu items -->
<!-- page titles -->
<string name="pageTitleAbout">عن التطبيق</string>
<string name="pageTitleHome">الرئيسية</string>
<string name="pageTitleMyRepos">مستودعاتي</string>
<string name="pageTitleRepositories">المستودعات</string>
<string name="pageTitleProfile">الملف التعريفي</string>
<string name="pageTitleNewRepo">مستودع جديد</string>
<string name="pageTitleOrganizations">المنظمات</string>
<string name="pageTitleIssues">Issues</string>
<string name="pageTitleSettings">الإعدادات</string>
<string name="pageTitleCreateOrganization">منظمة جديدة</string>
<string name="pageTitleCreateMilestone">New Milestone</string>
<string name="pageTitleCreateNewIssue">New Issue</string>
<string name="pageTitleCreateLabel">New Label</string>
<string name="pageTitleCredits">Credits</string>
<string name="pageTitleLabelUpdate">Update Label</string>
<string name="pageTitleSponsors">الرعاة</string>
<string name="pageTitleStarredRepos">المستودعات المفضلة</string>
<string name="pageTitleCreateTeam">فريق جديد</string>
<string name="pageTitleAddEmail">إضافة عنوان بريد الكتروني</string>
<string name="pageTitleNewFile">ملف جديد</string>
<string name="pageTitleExplore">استكشف</string>
<!-- page titles -->
<string name="appVersion">Version\u0020:\u0020</string>
<string name="appBuild">Build No.\u0020:\u0020</string>
<string name="repoName">Demo repo</string>
<string name="repoFullname">Repo with ORG</string>
<string name="repoDescription">مثال عن الوصف</string>
<string name="noData">No repositories found</string>
<string name="orgName">Demo organization</string>
<string name="orgDescription">مثال عن الوصف</string>
<string name="noDataOrg">No organizations found</string>
<string name="newCreateButtonCopy">انشئ</string>
<string name="newUpdateButtonCopy">Update</string>
<string name="newRepoTintCopy">اسم المستودع</string>
<string name="newRepoDescTintCopy">Repository Description</string>
<string name="newRepoPrivateCopy">خاص</string>
<string name="newRepoDescInfo">Max 255 characters</string>
<string name="newRepoOwner">مالك</string>
<string name="newOrgTintCopy">اسم المنظمة</string>
<string name="newOrgDescTintCopy">وصف المنظمة</string>
<string name="newOrgDescInfo">Max 255 characters</string>
<string name="userName">اسم المستخدم</string>
<string name="passWord">الكلمة السرية</string>
<string name="btnLogin">لِج</string>
<string name="instanceUrl">عنوان مثيل الخادم</string>
<string name="navigation_drawer_open">Open Navigation Drawer</string>
<string name="navigation_drawer_close">Close Navigation Drawer</string>
<string name="logo">لِج إلى Gitea</string>
<string name="urlInfoTooltip">1- Choose the correct protocol(https or http). \n2- Enter Gitea url e.g: try.gitea.io. \n3- If you have enabled 2FA for your account, enter the code in the OTP Code field. \n4- For HTTP basic auth use USERNAME@DOMAIN.COM in the URL field.</string>
<string name="loginFailed">اسم المستخدم أو الكلمة السرية خاطئة</string>
<string name="protocolError">It is not recommended to use HTTP protocol unless you are testing on local network.</string>
<string name="malformedJson">Malformed JSON was received. Server response was not successful.</string>
<string name="emptyFieldURL">Instance URL is required</string>
<string name="emptyFieldUsername">اسم المستخدم لازم</string>
<string name="emptyFieldPassword">الكلمة السرية لازمة</string>
<string name="checkNetConnection">Cannot access network, please check your Internet connection</string>
<string name="repoNameErrorEmpty">Repository name is empty</string>
<string name="repoNameErrorInvalid">Repository name is not valid. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="repoDescError">Repository description exceeds the max 255 characters limit</string>
<string name="repoCreated">Repository created successfully</string>
<string name="repoCreatedError">Something went wrong, please try again</string>
<string name="repoExistsError">Repository of this name already exists under selected Owner</string>
<string name="orgNameErrorEmpty">Organization name is empty</string>
<string name="orgNameErrorInvalid">Organization name is not valid, [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="orgDescError">Organization description exceeds the max 255 characters limit</string>
<string name="orgCreated">Organization created successfully</string>
<string name="orgCreatedError">Something went wrong, please try again</string>
<string name="orgExistsError">Organization already exists</string>
<string name="processingText">Processing</string>
<string name="search">البحث</string>
<string name="wip">Work in progress</string>
<string name="close">أغلق</string>
<string name="addNewContent">إضافة</string>
<string name="orgContentAvatar">Org</string>
<string name="repoContentAvatar">Repo</string>
<string name="privateAvatar">Pri</string>
<string name="removeContent">إزالة</string>
<string name="genericApiStatusError">Instance has returned an error. Code\u0020</string>
<string name="title_activity_repo_detail">RepoDetailActivity</string>
<string name="tab_text_info">التفاصيل</string>
<string name="tab_text_files">الملفات</string>
<string name="tab_text_issues">Open Issues</string>
<string name="tabItemCloseIssues">Closed Issues</string>
<string name="tab_text_ml">Milestones</string>
<string name="tab_text_releases">اﻹصدارات</string>
<string name="tab_text_branches">الفروع</string>
<string name="tab_text_labels">Labels</string>
<string name="action_settings">الإعدادات</string>
<string name="tab_text_collaborators">المتعاونون</string>
<string name="noDataIssueTab">No issues found</string>
<string name="infoTabRepoName1">المستودع</string>
<string name="infoTabRepoOwner1">مالك</string>
<string name="infoTabRepoDesc">الوصف</string>
<string name="infoTabRepoWebsite">موقع الويب</string>
<string name="infoTabRepoSize">الحجم</string>
<string name="infoTabRepoDefaultBranch">الفرع المبدئيّ</string>
<string name="infoTabRepoSshUrl">عنوان SSH</string>
<string name="infoTabRepoCloneUrl">انسخ العنوان</string>
<string name="infoTabRepoRepoUrl">عنوان المستودع</string>
<string name="infoTabRepoForksCount">المُشتقّات</string>
<string name="infoTabRepoCreatedAt">Created</string>
<string name="infoTabRepoUpdatedAt">Last Updated</string>
<string name="timeAtText">على</string>
<string name="createdText">Opened\u0020</string>
<string name="dueDateText">Due Date</string>
<string name="issueStatusTextOpen">Status: open</string>
<string name="issueStatusOpen">open</string>
<string name="issueStatusTextClosed">Status: closed</string>
<string name="issueStatusClosed">closed</string>
<string name="issueCreator">Creator :\u0020</string>
<string name="issueAssigneesText">Assignees</string>
<string name="issueTypeIssue">Type: Issue</string>
<string name="issueTypePullRequest">Type: Pull Request</string>
<string name="issueCommenter">Commenter:\u0020</string>
<string name="issueMilestone">Milestone %1$s</string>
<string name="dueDate">Due %1$s</string>
<string name="createdTime">Opened %1$s</string>
<string name="assignedTo">Assigned to: %1$s</string>
<string name="commentButtonText">تعليق</string>
<string name="commentEmptyError">Please write your comment</string>
<string name="commentSuccess">Comment posted</string>
<string name="commentError">Something went wrong, please try again</string>
<string name="generalImgContentText">الصورة الرمزية</string>
<string name="noDataMilestonesTab">No milestones found</string>
<string name="commitAuthor">Commit author: %1$s</string>
<string name="commitHash">Commit hash \n%1$s%2$s</string>
<string name="releaseTitle">Release Title</string>
<string name="releaseDescription">Release Description</string>
<string name="releaseDownloadText">التنزيلات</string>
<string name="releaseType">Release Type</string>
<string name="releaseZip">Release Zip</string>
<string name="releaseTar">Release Tar</string>
<string name="noDataReleasesTab">No releases found</string>
<string name="releaseTag">Tag: %1$s</string>
<string name="collaboratorsNameToast">Collaborator : %1$s</string>
<string name="noDataCollaboratorTab">No collaborators found</string>
<string name="editText">تعديل</string>
<string name="newMilestoneTitle">العنوان</string>
<string name="newMilestoneDescription">الوصف</string>
<string name="newMilestoneDueDate">Due Date</string>
<string name="milestoneNameErrorEmpty">Milestone title is empty</string>
<string name="milestoneNameErrorInvalid">Milestone title is not valid. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="milestoneDescError">Milestone description exceeds the max 255 characters limit</string>
<string name="milestoneCreated">Milestone created successfully</string>
<string name="milestoneCreatedError">Something went wrong, please try again</string>
<string name="milestoneDateEmpty">Please choose due date</string>
<string name="milestoneOpenIssues">Open issues : %1$d</string>
<string name="milestoneClosedIssues">Closed issues : %1$d</string>
<string name="newIssueSelectAssigneesListTitle">Select Assignees</string>
<string name="newIssueSelectLabelsListTitle">Select Labels</string>
<string name="newIssueDialogDone">تمّ</string>
<string name="newIssueDialogCancel">إلغاء</string>
<string name="newIssueTitle">العنوان</string>
<string name="newIssueAssigneesListTitle">Assignees</string>
<string name="newIssueDescriptionTitle">الوصف</string>
<string name="newIssueDueDateTitle">Due Date</string>
<string name="newIssueMilestoneTitle">Milestone</string>
<string name="newIssueLabelsTitle">Labels</string>
<string name="issueTitleEmpty">Issue title is empty</string>
<string name="issueDescriptionEmpty">Issue description is empty</string>
<string name="issueCreated">New issue created successfully</string>
<string name="issueCreatedError">Something went wrong, please try again</string>
<string name="noAssigneesFound">No collaborators found</string>
<string name="noLabelsFound">No labels found</string>
<!-- settings -->
<string name="settingsLanguageHeaderText">الترجمة</string>
<string name="settingsDateTimeHeaderText">Date &amp; Time</string>
<string name="settingsSave">تم حفظ الإعدادات.</string>
<string name="settingsLanguageSelectorHeader">اللغة</string>
<string name="settingsLanguageSelectedHeaderDefault">العربية</string>
<string name="settingsAppearanceHeader">المظهر</string>
<string name="settingsDateTimeHeaderDefault">Pretty</string>
<string name="settingsLanguageSelectorDialogTitle">اختر اللغة</string>
<string name="settingsTimeSelectorDialogTitle">Choose Time Format</string>
<string name="settingsIssueBadgeHeaderText">Issues Badge</string>
<string name="settingsHelpTranslateText">Help us translate GitNex to your language</string>
<string name="codeBlockHeaderText">Code Block Color</string>
<string name="settingsCodeBlockSelectorDialogTitle">Code Block Color Selector</string>
<string name="settingsHomeScreenHeaderText">الشاشة الرئيسية</string>
<string name="settingsHomeScreenSelectedText">مستودعاتي</string>
<string name="settingshomeScreenSelectorDialogTitle">Select Home Screen</string>
<!-- settings -->
<string name="noMoreData">No more data available</string>
<string name="createLabel">New Label</string>
<string name="menuTitleText">Repo Menu</string>
<string name="labelName">Label Name</string>
<string name="labelColor">Label Color</string>
<string name="labelEmptyError">Label name is empty</string>
<string name="labelNameError">Label name is not valid</string>
<string name="labelCreated">Label created.</string>
<string name="labelGeneralError">Something went wrong, please try again</string>
<string name="labelUpdated">Label updated.</string>
<string name="noDataLabelsTab">No labels found</string>
<string name="labelMenuContentDesc">Desc</string>
<string name="labelMenuEdit">تعديل</string>
<string name="labelMenuDelete">احذف</string>
<string name="labelDeleteText">Label deleted</string>
<string name="labelDeleteErrorText">Something went wrong, please try again</string>
<string name="noDataBranchesTab">No branches found</string>
<string name="creditsLogoDesign">Design</string>
<!-- credits - this part does not need translation -->
<!-- credits - this part does not need translation -->
<string name="alertDialogTokenRevokedTitle">Authorization Error</string>
<string name="alertDialogTokenRevokedMessage">It seems that the Access Token is revoked OR your are not allowed to see these contents. In case of revoked Token, please logout and login again</string>
<string name="alertDialogTokenRevokedCopyNegativeButton">إلغاء</string>
<string name="alertDialogTokenRevokedCopyPositiveButton">الخروج</string>
<string name="labelDeleteTitle">Delete\u0020</string>
<string name="labelDeleteMessage">Do you really want to delete this label?</string>
<string name="labelDeletePositiveButton">حسنًا</string>
<string name="labelDeleteNegativeButton">إلغاء</string>
<!-- org tabbed layout str -->
<string name="title_activity_org_detail">OrgDetailActivity</string>
<string name="orgTabRepos">المستودعات</string>
<string name="orgTabTeams">الفِرَق</string>
<string name="orgTabMembers">الأعضاء</string>
<string name="orgCreateTeam">فريق جديد</string>
<string name="noDataTeams">No teams found</string>
<string name="teamTitle">اسم الفريق</string>
<string name="teamDescription">وصف الفريق</string>
<string name="teamPermission">Permission : %1$s</string>
<string name="noDataMembers">No members found</string>
<string name="orgMember">أعضاء المنظمة</string>
<string name="orgTeamMembers">Organization team members</string>
<!-- org tabbed layout str -->
<!-- create team -->
<string name="newTeamTitle">اسم الفريق</string>
<string name="newTeamDesc">الوصف</string>
<string name="newTeamPermission">Permission</string>
<string name="newTeamAccessControls">Access Controls</string>
<string name="newTeamPermissionRead">Members can view and clone team repositories</string>
<string name="newTeamPermissionWrite">Members can read and push to team repositories</string>
<string name="newTeamPermissionAdmin">Members can pull and push to team repositories and add collaborators to them</string>
<string name="teamNameEmpty">Please enter team name</string>
<string name="teamNameError">Team name should contain only alphanumeric, dash (-), underscore (_) and dot (.) characters</string>
<string name="teamPermissionEmpty">Please select permission</string>
<string name="teamDescError">Team description have illegal characters</string>
<string name="teamDescLimit">Team description have more than 100 characters</string>
<string name="teamCreated">Team created successfully</string>
<string name="teamCreatedError">Something went wrong, please try again</string>
<!-- create team -->
<!-- edit comment -->
<string name="editCommentTitle">تعديل التعليق</string>
<string name="editCommentButtonText">تعديل</string>
<string name="editCommentUpdatedText">Comment updated</string>
<!-- edit comment -->
<!-- add collaborator -->
<string name="addCollaboratorTitle">Add / Remove Collaborator</string>
<string name="addCollaboratorSearchHint">البحث عن مستخدمين</string>
<string name="addCollaboratorViewUserDesc">اسم المستخدم</string>
<string name="removeCollaboratorTitle">Remove\u0020</string>
<string name="removeCollaboratorMessage">Do you want to remove this user from the repository?</string>
<string name="removeCollaboratorToastText">User removed from the repository.</string>
<string name="addCollaboratorToastText">User added to the repository.</string>
<!-- add collaborator -->
<!-- profile section -->
<string name="profileTabFollowers">المتابِعون</string>
<string name="profileTabFollowing">يتابع</string>
<string name="profileCreateNewEmailAddress">إضافة عنوان بريد إلكتروني</string>
<string name="profileEmailButton">حفظ</string>
<string name="profileEmailTitle">عنوان البريد الإلكتروني</string>
<string name="emailAddedText">New email added successfully.</string>
<string name="emailErrorEmpty">Email address is empty.</string>
<string name="emailErrorInvalid">Email address is not valid</string>
<string name="emailErrorInUse">Email address is already in use</string>
<string name="emailTypeText">أساسي</string>
<string name="profileTabEmails">Emails</string>
<!-- profile section -->
<!-- single issue section -->
<string name="singleIssueEditLabels">Add / Remove Labels</string>
<string name="labelsUpdated">Labels updated</string>
<string name="closeIssue">Close Issue</string>
<string name="replyToIssue">أضِف تعليقا</string>
<string name="editIssue">Edit Issue</string>
<string name="reOpenIssue">Reopen Issue</string>
<string name="issueStateClosed">Issue closed</string>
<string name="issueStateReopened">Issue reopened</string>
<string name="addRemoveAssignees2">Add Assignees</string>
<string name="addRemoveAssignees">Add / Remove Assignees</string>
<string name="assigneesUpdated">Assignees updated</string>
<!-- single issue section -->
<!-- multi select dialog -->
<string name="select_entry">Select Entries</string>
<string name="validation_text">Please select at least one option</string>
<string name="please_select_atleast">Please select at least </string>
<string name="you_can_only_select_upto">You can only select up to </string>
<string name="option"> خيار</string>
<string name="options"> الخيارات</string>
<string name="select_all">اختيار الكل</string>
<string name="de_select_all">Deselect all</string>
<!-- multi select dialog -->
<string name="repoMetaData">Repository Meta</string>
<!-- admin -->
<string name="adminCreateNewUser">إضافة مستخدم جديد</string>
<string name="adminUsers">المُستخدمون</string>
<string name="userRoleAdmin">المُدير</string>
<!-- admin -->
<!-- create user -->
<string name="userFullNameText">الاسم الكامل</string>
<string name="userEmail">البريد الإلكتروني</string>
<string name="userUserName">اسم المستخدم</string>
<string name="userPassword">الكلمة السرية</string>
<string name="userInvalidFullName">الاسم الكامل غير صالح</string>
<string name="userInvalidUserName">اسم المستخدم غير صحيح</string>
<string name="userInvalidEmail">البريد الالكتروني غير صحيح</string>
<string name="userCreatedText">New user added successfully</string>
<string name="userExistsError">User already exists</string>
<!-- create user -->
<!-- sponsors -->
<!-- sponsors -->
<!-- edit issue -->
<string name="editIssueNavHeader">Edit Issue #%1$s</string>
<string name="editIssueSuccessMessage">Issue updated.</string>
<!-- edit issue -->
<!-- release -->
<string name="createRelease">New Release</string>
<string name="releaseTagNameText">Tag Name</string>
<string name="releaseTitleText">العنوان</string>
<string name="releaseContentText">المحتوى</string>
<string name="releaseTypeText">Mark as Pre-Release</string>
<string name="releaseBranchText">اختر فرعًا</string>
<string name="releaseDraftText">مسودة</string>
<string name="tagNameErrorEmpty">Tag name is empty</string>
<string name="titleErrorEmpty">العنوان فارغ</string>
<string name="releaseCreatedText">New release created</string>
<!-- release -->
<string name="loginOTPError">Enter OTP code</string>
<string name="loginOTPTypeError">OTP code should be numbers.</string>
<string name="loginOTP">OTP Code (Optional)</string>
<string name="otpMessage">Enter the otp code if 2FA is enabled</string>
<string name="openWebRepo">افتح في المتصفح</string>
<string name="repoStargazersInMenu">المُعجَبون</string>
<string name="repoWatchersInMenu">المشاهدون</string>
<string name="noDataStargazers">No stars found</string>
<string name="noDataWatchers">No watchers found</string>
<string name="starMember">Star</string>
<string name="watcherMember">مشاهد</string>
<string name="commitLinkBranchesTab">Commit</string>
<string name="zipArchiveDownloadReleasesTab">Zip Archive</string>
<string name="tarArchiveDownloadReleasesTab">Tar Archive</string>
<!-- new file -->
<string name="newFileNameTintCopy">اسم الملف</string>
<string name="newFileBranchTintCopy">New Branch Name</string>
<string name="newFileContentTintCopy">محتوى الملف</string>
<string name="newFileButtonCopy">أنشئ ملفا جديدا</string>
<string name="newFileNameHintMessage">with folder: app/test.md</string>
<string name="newFileMessageTintCopy">Commit Message</string>
<string name="newFileInvalidBranchName">Invalid branch name, may only contain &#8211;, a&#8211;z, 0&#8211;9</string>
<string name="newFileCommitMessageError">Commit message is too long</string>
<string name="newFileSuccessMessage">أنشئ ملف جديد</string>
<string name="newFileOldBranches">Current Branches</string>
<string name="newFileRequiredFields">Fields like filename, content and commit message are required</string>
<string name="newFileCurrentBranchMessage">Selecting current branch will disable new branch</string>
<string name="newFileNewBranchMessage">مثال: new-branch</string>
<string name="newFileRequiredFieldNewBranchName">New branch name cannot be empty if current branch is not selected</string>
<string name="strFilter">Filter</string>
<string name="copyIssueUrl">Copy Issue URL</string>
<string name="copyIssueUrlToastMsg">Issue URL copied to clipboard</string>
<string name="milestoneCompletion">%1$d\uFF05 completed</string>
<!-- files -->
<string name="noDataFilesTab">لم يٌعثر على ملفات</string>
<string name="filesDirNotSupportedYet">Directory browsing is not supported yet</string>
<string name="filesGenericError">Sorry this file cannot be viewed as API returned an error</string>
<string name="filesBreadcrumb">الجذر</string>
<!-- generic copy -->
<string name="okButton">حسنًا</string>
<string name="doneButton">تمّ</string>
<string name="cancelButton">إلغاء</string>
<string name="genericError">Something went wrong, please try again</string>
<string name="apiNotFound">This request needs higher Gitea version than the one installed. Please upgrade your instance to the latest version of Gitea.</string>
<string name="noDataFound">لم يُعثر على بيانات</string>
<string name="addButton">أضف</string>
<string name="removeButton">أزِل</string>
<string name="authorizeError">You are not authorized to perform this action.</string>
<string name="menuContentDesc">القائمة</string>
<string name="menuEditText">تعديل</string>
<string name="menuDeleteText">احذف</string>
<string name="modifiedText">تم تحريره</string>
<string name="saveButton">احفظ</string>
<string name="nameText">الاسم</string>
<string name="descriptionText">الوصف</string>
<string name="websiteText">موقع الويب</string>
<string name="locationText">المكان</string>
<string name="characters255Limit">Max 255 characters</string>
<string name="emptyFields">كافة الحقول لازمة</string>
<!-- generic copy -->
<string name="translateText">ترجم GitNex على كراودين</string>
<string name="exploreTextBoxHint">Explore repositories</string>
<string name="starRepository">Star Repository</string>
<string name="unStarRepository">Unstar Repository</string>
<string name="starRepositorySuccess">تمت إضافة المستودع إلى قائمة المفضلة</string>
<string name="unStarRepositorySuccess">تمت إزالة المستودع مِن قائمة المفضلة</string>
<string name="watchRepository">راقب المستودع</string>
<string name="unWatchRepository">إلغاء مراقبة المستودع</string>
<string name="watchRepositorySuccess">تمت إضافة المستودع إلى قائمة المراقبة</string>
<string name="unWatchRepositorySuccess">تمت إزالة المستودع مِن قائمة المراقبة</string>
</resources>

View File

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources>
<!-- menu items -->
<string name="navMyRepos">Meine Repositories</string>
<string name="navStarredRepos">Favoriten</string>
@ -10,8 +11,8 @@
<string name="navAbout">Über</string>
<string name="navRate">Bewerte GitNex</string>
<string name="navLogout">Ausloggen</string>
<string name="navExplore">Erkunden</string>
<!-- menu items -->
<!-- page titles -->
<string name="pageTitleAbout">Über</string>
<string name="pageTitleHome">Startseite</string>
@ -26,122 +27,98 @@
<string name="pageTitleCreateMilestone">Meilenstein erstellen</string>
<string name="pageTitleCreateNewIssue">Issue erstellen</string>
<string name="pageTitleCreateLabel">Label erstellen</string>
<string name="pageTitleCredits">Credits</string>
<string name="pageTitleCredits">Mitwirkende</string>
<string name="pageTitleLabelUpdate">Label aktualisieren</string>
<string name="pageTitleSponsors">Sponsoren</string>
<string name="pageTitleStarredRepos">Favoriten</string>
<string name="pageTitleCreateTeam">Team erstellen</string>
<string name="pageTitleAddEmail">E-Mail Adresse hinzufügen</string>
<string name="pageTitleNewFile">New File</string>
<string name="pageTitleNewFile">Neue Datei</string>
<string name="pageTitleExplore">Erkunden</string>
<!-- page titles -->
<string name="appVersion">Version\u0020:\u0020</string>
<string name="appBuild">Build Nr.\u0020:\u0020</string>
<string name="repoName">Demo Repo</string>
<string name="repoFullname">Repo mit ORG</string>
<string name="repoDescription">Demo Beschreibung</string>
<string name="noData">Keine Repositories gefunden</string>
<string name="orgName">Demo Organisation</string>
<string name="orgDescription">Demo Beschreibung</string>
<string name="noDataOrg">Keine Organisation gefunden</string>
<string name="newCreateButtonCopy">Erstellen</string>
<string name="newUpdateButtonCopy">Aktualisieren</string>
<string name="newRepoTintCopy">Name des Repositories</string>
<string name="newRepoDescTintCopy">Beschreibung des Repositories</string>
<string name="newRepoPrivateCopy">Privat</string>
<string name="newRepoDescInfo">maximal 255 Zeichen</string>
<string name="newRepoOwner">Eigentümer</string>
<string name="newOrgTintCopy">Name der Organisation</string>
<string name="newOrgDescTintCopy">Beschreibung der Organisation</string>
<string name="newOrgDescInfo">maximal 255 Zeichen</string>
<string name="userName">Benutzername</string>
<string name="passWord">Passwort</string>
<string name="btnLogin">ANMELDEN</string>
<string name="instanceUrl">Gitea URL</string>
<string name="instanceUrl">Instanz Link</string>
<string name="navigation_drawer_open">Navigationsleiste öffnen</string>
<string name="navigation_drawer_close">Navigationsleiste schließen</string>
<string name="logo">In Gitea anmelden</string>
<string name="urlInfoTooltip">1- Wähle das richtige Protokoll (https oder http) \ N2- Gebe die Gitea-URL ein, z.B. try.gitea.io \n3- Falls du 2FA aktiviert hast, gib den Code in das OTP-Code Feld ein. \n4- Für HTTP basic auth nutze BENUTZERNAME@DOMAIN.COM im URL Feld</string>
<string name="loginFailed">Falscher Benutzername/Passwort </string>
<string name="protocolDelimiter">://</string>
<string name="protocolError">Es wird nicht empfohlen, das HTTP-Protokoll zu verwenden, es sei denn, du testest in einem lokalen Netzwerk.</string>
<string name="malformedJson">Fehlerhaftes JSON erhalten. Serveranfrage war nicht erfolgreich.</string>
<string name="emptyFieldURL">Instanzen-URL ist erforderlich</string>
<string name="emptyFieldUsername">Benutzername ist erforderlich</string>
<string name="emptyFieldPassword">Passwort ist erforderlich</string>
<string name="checkNetConnection">Kann nicht auf das Netzwerk zugreifen. Bitte überprüfe die Internetverbindung</string>
<string name="emptyFields">Es sind alle Felder erforderlich</string>
<string name="repoNameErrorEmpty">Der Repository Name ist leer.</string>
<string name="repoNameErrorInvalid">Der Repository Name ist nicht gültig. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="repoDescError">Die Repositorybeschreibung überschreitet die maximale Anzahl von 255 Zeichen</string>
<string name="repoDescError">Die Repository Beschreibung überschreitet die maximale Anzahl von 255 Zeichen</string>
<string name="repoCreated">Repository erfolgreich erstellt!</string>
<string name="repoCreatedError">Etwas ist schief gelaufen. Bitte versuche es erneut</string>
<string name="repoExistsError">Ein Repository mit diesem Namen existiert bereits unter dem ausgewählten Besitzer</string>
<string name="orgNameErrorEmpty">Organisationsname ist leer</string>
<string name="orgNameErrorEmpty">Name der Organisation ist leer</string>
<string name="orgNameErrorInvalid">Organisationsname ist nicht gültig, [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="orgDescError">Organisationsbeschreibung überschreitet maximale Anzahl von 255 Zeichen</string>
<string name="orgCreated">Organisation erfolgreich erstellt!</string>
<string name="orgCreatedError">Etwas ist schief gelaufen. Bitte versuche es erneut</string>
<string name="orgExistsError">Organisation existiert bereits</string>
<string name="processingText">verarbeite</string>
<string name="search">Suche</string>
<string name="wip">In Arbeit</string>
<string name="close">Schließen</string>
<string name="addNewContent">Hinzufügen</string>
<string name="orgContentAvatar">Org</string>
<string name="repoContentAvatar">Repo</string>
<string name="privateAvatar">Pri</string>
<string name="repoStars">12345</string>
<string name="repoWatchers">98324</string>
<string name="repoIssues">54321</string>
<string name="removeContent">Entfernen</string>
<string name="genericApiStatusError">Die Gitea Instanz hat einen Fehler zurückgegeben. Code\u0020</string>
<string name="genericApiStatusError">Die Instanz hat einen Fehler zurückgegeben. Code\u0020</string>
<string name="title_activity_repo_detail">Repo-Details Aktivität</string>
<string name="tab_text_info">Details</string>
<string name="tab_text_files">Dateien</string>
<string name="tab_text_issues">Offene Issues</string>
<string name="tabItemCloseIssues">Geschlossene Issues</string>
<string name="tab_text_ml">Meilensteine</string>
<string name="tab_text_releases">Veröffentlichungen</string>
<string name="tab_text_releases">Releases</string>
<string name="tab_text_branches">Branches</string>
<string name="tab_text_labels">Labels</string>
<string name="action_settings">Einstellungen</string>
<string name="tab_text_collaborators">Mitarbeiter</string>
<string name="noDataIssueTab">Keine Issues gefunden!</string>
<string name="infoTabRepoName1">Repository</string>
<string name="infoTabRepoOwner1">Eigentümer</string>
<string name="infoTabRepoDesc">Beschreibung</string>
<string name="infoTabRepoWebsite">Webseite</string>
<string name="infoTabRepoSize">Größe</string>
<string name="infoTabRepoDefaultBranch">Standard Branch</string>
<string name="infoTabRepoSshUrl">SSH URL</string>
<string name="infoTabRepoCloneUrl">Klon URL</string>
<string name="infoTabRepoRepoUrl">Repo URL</string>
<string name="infoTabRepoSshUrl">SSH Link</string>
<string name="infoTabRepoCloneUrl">Klon Link</string>
<string name="infoTabRepoRepoUrl">Repository Link</string>
<string name="infoTabRepoForksCount">Anzahl an Forks</string>
<string name="infoTabRepoCreatedAt">Erstellt</string>
<string name="infoTabRepoUpdatedAt">Letzte Aktualisierung</string>
<string name="infoTabRepoDummyTime">2018&#8211;10&#8211;30 08:25:25</string>
<string name="infoTabRepoBlank">&#8230;</string>
<string name="infoTabRepoZero">0</string>
<string name="infoTabRepoDefaultBranchText">master</string>
<string name="timeAtText">um</string>
<string name="hash">#</string>
<string name="createdText">Erstellt\u0020</string>
<string name="dueDateText">Fälligkeitsdatum </string>
<string name="dueDateText">Fälligkeitsdatum</string>
<string name="issueStatusTextOpen">Status: offen</string>
<string name="issueStatusOpen">öffnen</string>
<string name="issueStatusTextClosed">Status: geschlossen</string>
@ -151,7 +128,6 @@
<string name="issueTypeIssue">Typ: Issue</string>
<string name="issueTypePullRequest">Typ: Pull Anfrage</string>
<string name="issueCommenter">Kommentator:\u0020</string>
<string name="issueTitleWithId">#%1$d %2$s</string>
<string name="issueMilestone">Meilenstein %1$s</string>
<string name="dueDate">Fällig %1$s</string>
<string name="createdTime">Erstellt %1$s</string>
@ -160,15 +136,10 @@
<string name="commentEmptyError">Bitte schreibe deinen Kommentar!</string>
<string name="commentSuccess">Kommentar gepostet</string>
<string name="commentError">Etwas ist schief gelaufen. Bitte versuche es erneut</string>
<string name="generalImgContentText">Benutzerbild</string>
<string name="generalPageTitle">GitNex</string>
<string name="noDataMilestonesTab">Kein Meilenstein gefunden!</string>
<string name="commitAuthor">Commit Autor: %1$s</string>
<string name="commitHash">Commit Hash \n%1$s%2$s</string>
<string name="releaseTitle">Release Titel</string>
<string name="releaseDescription">Release Beschreibung</string>
<string name="releaseDownloadText">Downloads</string>
@ -177,16 +148,12 @@
<string name="releaseTar">Release Tar</string>
<string name="noDataReleasesTab">Kein Release gefunden!</string>
<string name="releaseTag">Tag: %1$s</string>
<string name="collaboratorsNameToast">Zuständiger: %1$s</string>
<string name="collaboratorsNameToast">Mitarbeiter : %1$s</string>
<string name="noDataCollaboratorTab">Kein Zuständiger gefunden!</string>
<string name="editText">Bearbeiten</string>
<string name="newMilestoneTitle">Titel</string>
<string name="newMilestoneDescription">Beschreibung</string>
<string name="newMilestoneDueDate">Fälligkeitsdatum</string>
<string name="setDueDate">%1$d-%2$d-%3$d</string>
<string name="milestoneNameErrorEmpty">Titel des Meilensteins ist leer</string>
<string name="milestoneNameErrorInvalid">Titel des Meilensteins ist nicht gültig. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="milestoneDescError">Die Beschreibung des Meilensteins überschreitet die maximale Anzahl von 255 Zeichen</string>
@ -195,7 +162,6 @@
<string name="milestoneDateEmpty">Bitte wählen Sie das Fälligkeitsdatum!</string>
<string name="milestoneOpenIssues">Offene Issues: %1$d</string>
<string name="milestoneClosedIssues">Geschlossene Issues: %1$d</string>
<string name="newIssueSelectAssigneesListTitle">Wählen Sie Zuständige aus</string>
<string name="newIssueSelectLabelsListTitle">Label auswählen</string>
<string name="newIssueDialogDone">Erledigt</string>
@ -206,15 +172,12 @@
<string name="newIssueDueDateTitle">Fälligkeitsdatum</string>
<string name="newIssueMilestoneTitle">Meilenstein</string>
<string name="newIssueLabelsTitle">Labels</string>
<string name="spinnerMilestoneText">%1$s [%2$s]</string>
<string name="dialogAssignessText">%1$s - @%2$s</string>
<string name="issueTitleEmpty">Der Titel des Issues ist leer!</string>
<string name="issueDescriptionEmpty">Die Beschreibung des Issues ist leer!</string>
<string name="issueCreated">Neues Issues wurde erfolgreich erstellt!</string>
<string name="issueCreatedError">Etwas ist schief gelaufen. Bitte versuche es erneut</string>
<string name="noAssigneesFound">Keine Zuständigen gefunden!</string>
<string name="noLabelsFound">Keine Labels gefunden!</string>
<!-- settings -->
<string name="settingsLanguageHeaderText">Sprachen</string>
<string name="settingsDateTimeHeaderText">Datum &amp; Uhrzeit</string>
@ -228,45 +191,39 @@
<string name="settingsIssueBadgeHeaderText">Issues Badge</string>
<string name="settingsHelpTranslateText">Hilf uns dabei, GitNex in deine Sprache zu übersetzen.</string>
<string name="codeBlockHeaderText">Code Block Farbe</string>
<string name="settingsCodeBlockSelectorDialogTitle">Code Block Farb Auswahl</string>
<string name="settingsHomeScreenHeaderText">Home Screen</string>
<string name="settingsCodeBlockSelectorDialogTitle">Code-Block-Farbauswahl</string>
<string name="settingsHomeScreenHeaderText">Startseite</string>
<string name="settingsHomeScreenSelectedText">Meine Repositories</string>
<string name="settingshomeScreenSelectorDialogTitle">Home Screen Auswählen</string>
<!-- settings -->
<string name="noMoreData">Keine weiteren Daten verfügbar!</string>
<string name="noMoreData">Keine weiteren Daten verfügbar.</string>
<string name="createLabel">Label erstellen</string>
<string name="menuTitleText">Repo Menü</string>
<string name="labelName">Label Name</string>
<string name="labelName">Beschriftung</string>
<string name="labelColor">Label Farbe</string>
<string name="labelEmptyError">Der Labelname ist leer!</string>
<string name="labelNameError">Der Labelname ist nicht gültig!</string>
<string name="labelEmptyError">Name des Namens ist leer.</string>
<string name="labelNameError">Label Name ist ungültig.</string>
<string name="labelCreated">Label wurde erfolgreich erstellt!</string>
<string name="labelGeneralError">Etwas ist schief gelaufen. Bitte versuche es erneut</string>
<string name="labelGeneralError">Etwas ist schief gelaufen, bitte versuche es erneut.</string>
<string name="labelUpdated">Label aktualisiert!</string>
<string name="noDataLabelsTab">Keine Labels gefunden!</string>
<string name="labelMenuContentDesc">Beschreibung</string>
<string name="labelMenuEdit">Bearbeiten</string>
<string name="labelMenuDelete">Löschen</string>
<string name="labelDeleteText">Label gelöscht!</string>
<string name="labelDeleteErrorText">Etwas ist schief gelaufen. Bitte versuche es erneut</string>
<string name="noDataBranchesTab">Keine Branch gefunden!</string>
<string name="creditsLogoDesign">Design</string>
<!-- credits - this part does not need translation -->
<!-- credits - this part does not need translation -->
<string name="alertDialogTokenRevokedTitle">Autorisierungsfehler</string>
<string name="alertDialogTokenRevokedMessage">Es scheint, dass der Access Token widerrufen wurde ODER du diese Inhalte nicht sehen darfst. Falls der Token wiederrufen wurde, melde dich bitte ab und wieder an.</string>
<string name="alertDialogTokenRevokedMessage">Es scheint, dass das Access Token widerrufen wurde ODER du die Inhalte nicht sehen darfst. Im Falle von widerrufenen Token, bitte logge dich aus und wieder ein.</string>
<string name="alertDialogTokenRevokedCopyNegativeButton">Abbrechen</string>
<string name="alertDialogTokenRevokedCopyPositiveButton">Abmelden</string>
<string name="labelDeleteTitle">Löschen\u0020</string>
<string name="labelDeleteMessage">Möchtest du dieses Label wirklich entfernen?</string>
<string name="labelDeletePositiveButton">Ok</string>
<string name="labelDeleteNegativeButton">Abbrechen</string>
<!-- org tabbed layout str -->
<string name="title_activity_org_detail">OrgDetailActivity</string>
<string name="orgTabRepos">Repositories</string>
@ -275,61 +232,55 @@
<string name="orgCreateTeam">Team erstellen</string>
<string name="noDataTeams">Keine Teams gefunden!</string>
<string name="teamTitle">Name des Teams</string>
<string name="teamDescription">Beschrebung des Teams</string>
<string name="teamDescription">Beschreibung des Teams</string>
<string name="teamPermission">Berechtigung: %1$s</string>
<string name="noDataMembers">Keine Mitglieder gefunden!</string>
<string name="orgMember">Org Mitglied</string>
<string name="orgTeamMembers">Mitglieder der Organization</string>
<string name="orgMember">Org Mitglieder</string>
<string name="orgTeamMembers">Mitglieder der Organisation</string>
<!-- org tabbed layout str -->
<!-- create team -->
<string name="newTeamTitle">Name des Teams</string>
<string name="newTeamDesc">Beschreibung des Teams</string>
<string name="newTeamPermission">Berechtigung</string>
<string name="newTeamAccessControls">Zugriffsrechte</string>
<string name="newTeamPermissionRead">Mitglieder können Team-Repositories anschauen und klonen</string>
<string name="newTeamPermissionWrite">Mitglieder können Team-Repositories anschauen und zu Team-Repositories pushen</string>
<string name="newTeamPermissionAdmin">Mitglieder können zu Team-Repositories pushen und pullen und Mitarbeiter zu ihnen hinzufügen</string>
<string name="teamNameEmpty">Bitte gib den Namen des Teams ein.</string>
<string name="teamNameError">Der Name des Teams sollte nur Alphanumerische Zeichen, Bindestriche (-), Unterstriche (_) und Punkte (.) enthalten.</string>
<string name="teamPermissionEmpty">Bitte wähle die Rechte aus.</string>
<string name="teamDescError">Die Beschreibung des Teams hat verbotene Zeichen.</string>
<string name="teamDescLimit">Die Team Beschreibung überschreitet das Maximum von 100 Zeichen.</string>
<string name="newTeamPermissionRead">Mitglieder können Team Repositorys einsehen und klonen.</string>
<string name="newTeamPermissionWrite">Mitglieder können auf Team-Repositories lesen und schreiben.</string>
<string name="newTeamPermissionAdmin">Mitglieder können auf Team-Repositories lesen, schreiben und Teilnehmer hinzufügen.</string>
<string name="teamNameEmpty">Bitte geben Sie den Teamnamen ein.</string>
<string name="teamNameError">Team Name sollte nur Buchstaben, Zahlen, Punkte, Bindestrich (-) und Unterstriche (_) enthalten.</string>
<string name="teamPermissionEmpty">Bitte wählen Sie die Berechtigung.</string>
<string name="teamDescError">Die Team Beschreibung hat illegale Zeichen.</string>
<string name="teamDescLimit">Team Beschreibung hat mehr als 100 Zeichen.</string>
<string name="teamCreated">Team erfolgreich erstellt.</string>
<string name="teamCreatedError">Etwas ist schief gelaufen. Bitte versuche es später erneut</string>
<string name="teamCreatedError">Etwas ist schief gelaufen, bitte versuche es erneut.</string>
<!-- create team -->
<!-- edit comment -->
<string name="editCommentTitle">Kommentar bearbeiten</string>
<string name="editCommentButtonText">Bearbeiten</string>
<string name="editCommentUpdatedText">Kommentar erfolgreich bearbeitet</string>
<!-- edit comment -->
<!-- add collaborator -->
<string name="addCollaboratorTitle">Mitarbeiter hinzufügen</string>
<string name="addCollaboratorSearchHint">Benutzer durchsuchen</string>
<string name="addCollaboratorViewUserDesc">Benutzername</string>
<string name="removeCollaboratorTitle">entfernen\u0020</string>
<string name="removeCollaboratorMessage">Möchtest du den Nutzer wirklich von dieser Repository entfernen?</string>
<string name="removeCollaboratorToastText">Benuter von der Repository entfernt.</string>
<string name="removeCollaboratorToastText">Benutzer von der Repository entfernt.</string>
<string name="addCollaboratorToastText">Benutzer zu der Repository hinzugefügt.</string>
<string name="openWebRepo">Öffne mit Browser</string>
<!-- add collaborator -->
<!-- profile section -->
<string name="profileTabFollowers">Follower</string>
<string name="profileTabFollowers">Folgen mir</string>
<string name="profileTabFollowing">Folge ich</string>
<string name="profileCreateNewEmailAddress">E-Mail Adresse hinzufügen</string>
<string name="profileEmailButton">Speichern</string>
<string name="profileEmailTitle">E-Mail Adresse</string>
<string name="emailAddedText">Neue E-Mail Adresse erfolgreich hinzugefügt.</string>
<string name="emailErrorEmpty">E-Mail Adresse ist leer.</string>
<string name="emailErrorInvalid">E-Mail Adresse ist nicht gültig.</string>
<string name="emailErrorInUse">Die E-Mail Adresse wird bereits verwendet.</string>
<string name="emailErrorInvalid">E-Mail Adresse ist ungültig.</string>
<string name="emailErrorInUse">E-Mail Adresse ist bereits in Benutzung.</string>
<string name="emailTypeText">Primär</string>
<string name="profileTabEmails">E-Mails</string>
<!-- profile section -->
<!-- single issue section -->
<string name="singleIssueEditLabels">Labels hinzufügen/entfernen</string>
<string name="labelsUpdated">Labels aktualisiert</string>
@ -343,26 +294,22 @@
<string name="addRemoveAssignees">Zuständige hinzufügen/entfernen</string>
<string name="assigneesUpdated">Zuständige aktualisiert</string>
<!-- single issue section -->
<!-- multi select dialog -->
<string name="select_entry">Einträge auswählen</string>
<string name="validation_text">Bitte mindestens eine Option auswählen</string>
<string name="please_select_atleast">Du musst mindestens so viele auswälen: </string>
<string name="please_select_atleast">Du musst mindestens so viele auswählen: </string>
<string name="you_can_only_select_upto">Du kannst höchstens so viele auswählen: </string>
<string name="option"> Option</string>
<string name="options"> Optionen</string>
<string name="select_all">Alle auswählen</string>
<string name="de_select_all">Die Auswahl aufheben</string>
<!-- multi select dialog -->
<string name="repoMetaData">Repository Meta</string>
<string name="repoMetaData">Repository Informationen</string>
<!-- admin -->
<string name="adminCreateNewUser">Neuen Benutzer erstellen</string>
<string name="adminUsers">Benutzer</string>
<string name="userRoleAdmin">Admin</string>
<string name="userRoleAdmin">Administrator</string>
<!-- admin -->
<!-- create user -->
<string name="userFullNameText">Ganzer Name</string>
<string name="userEmail">E-Mail</string>
@ -374,12 +321,12 @@
<string name="userCreatedText">Neuer Benutzer erfolgreich erstellt</string>
<string name="userExistsError">Benutzer existiert bereits</string>
<!-- create user -->
<!-- sponsors -->
<!-- sponsors -->
<!-- edit issue -->
<string name="editIssueNavHeader">Bearbeite Issue #%1$s</string>
<string name="editIssueSuccessMessage">Issue aktualisiert.</string>
<!-- edit issue -->
<!-- release -->
<string name="createRelease">Release erstellen</string>
<string name="releaseTagNameText">Tag</string>
@ -392,23 +339,20 @@
<string name="titleErrorEmpty">Der Titel ist leer</string>
<string name="releaseCreatedText">Neuer Release erstellt</string>
<!-- release -->
<string name="loginOTPError">Bitte gib den OTP code ein</string>
<string name="loginOTPTypeError">Der OTP code muss aus Zahlen bestehen.</string>
<string name="loginOTP">OTP Code (Optional)</string>
<string name="otpMessage">Gib den otp code ein, wenn 2FA eingeschaltet ist</string>
<string name="loginOTPError">Bitte OTP-Code Eingeben</string>
<string name="loginOTPTypeError">Der OTP-Code muss aus Zahlen bestehen.</string>
<string name="loginOTP">OTP-Code (optional)</string>
<string name="otpMessage">Gib den OTP-Code ein, wenn 2FA eingeschaltet ist</string>
<string name="openWebRepo">Öffne mit Browser</string>
<string name="repoStargazersInMenu">Favorisierer</string>
<string name="repoWatchersInMenu">Beobachter</string>
<string name="noDataStargazers">Keine Favorisierer gefunden</string>
<string name="noDataWatchers">Keine Beobachter gefunden</string>
<string name="starMember">Favorisierer</string>
<string name="watcherMember">Beobachter</string>
<string name="commitLinkBranchesTab">Commit</string>
<string name="zipArchiveDownloadReleasesTab">Zip Archiv</string>
<string name="tarArchiveDownloadReleasesTab">Tar Archiv</string>
<!-- new file -->
<string name="newFileNameTintCopy">Dateiname</string>
<string name="newFileBranchTintCopy">neuer Branch-Name</string>
@ -421,17 +365,18 @@
<string name="newFileSuccessMessage">Neue Datei erstellt</string>
<string name="newFileOldBranches">Derzeitige Branches</string>
<string name="newFileRequiredFields">Felder wie Dateiname, Inhalt und Commit-Nachricht sind erforderlich.</string>
<string name="newFileCurrentBranchMessage">Das Auswählen des derzeitigen Branches wird "neuer Branch-Name" deaktivieren</string>
<string name="newFileCurrentBranchMessage">Das Auswählen des derzeitigen Branches wird \"neuer Branch-Name\" deaktivieren</string>
<string name="newFileNewBranchMessage">z.B.: neuer-branch</string>
<string name="newFileRequiredFieldNewBranchName">Neuer Branch-Name kann nicht leer sein, wenn der derzeitige Branch nicht ausgewählt ist</string>
<string name="strFilter">Filter</string>
<string name="copyIssueUrl">Issue URL kopieren</string>
<string name="copyIssueUrlToastMsg">Issue URL copied to clipboard</string>
<string name="copyIssueUrl">Issue Link kopieren</string>
<string name="copyIssueUrlToastMsg">Issue Link in Zwischenablage kopiert</string>
<string name="milestoneCompletion">%1$d\uFF05 abgeschlossen</string>
<!-- files -->
<string name="noDataFilesTab">Keine Dateien gefunden</string>
<string name="filesDirNotSupportedYet">Ordner werden noch nicht unterstützt</string>
<string name="filesGenericError">Leider kann diese Datei nicht angezeigt werden, da die API einen Fehler zurückgab</string>
<string name="filesBreadcrumb">Wurzel</string>
<!-- generic copy -->
<string name="okButton">OK</string>
<string name="doneButton">Fertig</string>
@ -452,6 +397,16 @@
<string name="websiteText">Website</string>
<string name="locationText">Standort</string>
<string name="characters255Limit">maximal 255 Zeichen</string>
<string name="emptyFields">Es sind alle Felder erforderlich</string>
<!-- generic copy -->
<string name="translateText">GitNex mit Crowdin übersetzen</string>
<string name="exploreTextBoxHint">Repositories entdecken</string>
<string name="starRepository">Repository favorisieren</string>
<string name="unStarRepository">Repository nicht mehr favorisieren</string>
<string name="starRepositorySuccess">Repository zur Favoriten hinzugefügt</string>
<string name="unStarRepositorySuccess">Repository von Favoriten entfernt</string>
<string name="watchRepository">Repository beobachten</string>
<string name="unWatchRepository">Repository nicht mehr beobachten</string>
<string name="watchRepositorySuccess">Repository zur Merkliste hinzugefügt</string>
<string name="unWatchRepositorySuccess">Repository von der Merkliste entfernt</string>
</resources>

View File

@ -0,0 +1,412 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources>
<!-- menu items -->
<string name="navMyRepos">مخازن من</string>
<string name="navStarredRepos">مخازن ستاره دار</string>
<string name="navRepos">مخازن</string>
<string name="navProfile">پروفایل</string>
<string name="navSettings">تنظیمات</string>
<string name="navOrgs">سازمانها</string>
<string name="navAbout">در مورد ما</string>
<string name="navRate">به GitNex امتیاز دهید</string>
<string name="navLogout">خروج از حساب کاربری</string>
<string name="navExplore">Explore</string>
<!-- menu items -->
<!-- page titles -->
<string name="pageTitleAbout">در مورد ما</string>
<string name="pageTitleHome">خانه</string>
<string name="pageTitleMyRepos">مخازن من</string>
<string name="pageTitleRepositories">مخازن</string>
<string name="pageTitleProfile">پروفایل</string>
<string name="pageTitleNewRepo">ایجاد مخزن جدید</string>
<string name="pageTitleOrganizations">سازمانها</string>
<string name="pageTitleIssues">مشکلات</string>
<string name="pageTitleSettings">تنظیمات</string>
<string name="pageTitleCreateOrganization">سازمان جدید</string>
<string name="pageTitleCreateMilestone">New Milestone</string>
<string name="pageTitleCreateNewIssue">مشکل جدید</string>
<string name="pageTitleCreateLabel">برچسب جدید</string>
<string name="pageTitleCredits">Credits</string>
<string name="pageTitleLabelUpdate">به روز رسانی برچسب</string>
<string name="pageTitleSponsors">حامیان</string>
<string name="pageTitleStarredRepos">مخازن ستاره دار</string>
<string name="pageTitleCreateTeam">تیم جدید</string>
<string name="pageTitleAddEmail">افزدون پست الکترونیکی</string>
<string name="pageTitleNewFile">فایل جدید</string>
<string name="pageTitleExplore">Explore</string>
<!-- page titles -->
<string name="appVersion">نسخه\u0020:\u0020</string>
<string name="appBuild">Build No.\u0020:\u0020</string>
<string name="repoName">Demo repo</string>
<string name="repoFullname">Repo with ORG</string>
<string name="repoDescription">Demo description</string>
<string name="noData">مخزن یافت نشد</string>
<string name="orgName">Demo organization</string>
<string name="orgDescription">Demo description</string>
<string name="noDataOrg">سازمان یافت نشد</string>
<string name="newCreateButtonCopy">ایجاد</string>
<string name="newUpdateButtonCopy">به روزرسانی</string>
<string name="newRepoTintCopy">نام مخزن</string>
<string name="newRepoDescTintCopy">توضیح مخزن</string>
<string name="newRepoPrivateCopy">خصوصی</string>
<string name="newRepoDescInfo">حداکثر 255 کاراکتر</string>
<string name="newRepoOwner">مالک</string>
<string name="newOrgTintCopy">نام سازمان</string>
<string name="newOrgDescTintCopy">توضیحات سازمان</string>
<string name="newOrgDescInfo">حداکثر 255 کاراکتر</string>
<string name="userName">نام کاربری</string>
<string name="passWord">رمز عبور</string>
<string name="btnLogin">ورود به حساب کاربری</string>
<string name="instanceUrl">Instance URL</string>
<string name="navigation_drawer_open">Open Navigation Drawer</string>
<string name="navigation_drawer_close">Close Navigation Drawer</string>
<string name="logo">Login to Gitea</string>
<string name="urlInfoTooltip">1- Choose the correct protocol(https or http). \n2- Enter Gitea url e.g: try.gitea.io. \n3- If you have enabled 2FA for your account, enter the code in the OTP Code field. \n4- For HTTP basic auth use USERNAME@DOMAIN.COM in the URL field.</string>
<string name="loginFailed">Wrong username/password</string>
<string name="protocolError">It is not recommended to use HTTP protocol unless you are testing on local network.</string>
<string name="malformedJson">Malformed JSON was received. Server response was not successful.</string>
<string name="emptyFieldURL">Instance URL is required</string>
<string name="emptyFieldUsername">Username is required</string>
<string name="emptyFieldPassword">Password is required</string>
<string name="checkNetConnection">Cannot access network, please check your Internet connection</string>
<string name="repoNameErrorEmpty">Repository name is empty</string>
<string name="repoNameErrorInvalid">Repository name is not valid. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="repoDescError">Repository description exceeds the max 255 characters limit</string>
<string name="repoCreated">Repository created successfully</string>
<string name="repoCreatedError">Something went wrong, please try again</string>
<string name="repoExistsError">Repository of this name already exists under selected Owner</string>
<string name="orgNameErrorEmpty">Organization name is empty</string>
<string name="orgNameErrorInvalid">Organization name is not valid, [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="orgDescError">Organization description exceeds the max 255 characters limit</string>
<string name="orgCreated">Organization created successfully</string>
<string name="orgCreatedError">Something went wrong, please try again</string>
<string name="orgExistsError">Organization already exists</string>
<string name="processingText">Processing</string>
<string name="search">Search</string>
<string name="wip">Work in progress</string>
<string name="close">Close</string>
<string name="addNewContent">Add</string>
<string name="orgContentAvatar">Org</string>
<string name="repoContentAvatar">Repo</string>
<string name="privateAvatar">Pri</string>
<string name="removeContent">Remove</string>
<string name="genericApiStatusError">Instance has returned an error. Code\u0020</string>
<string name="title_activity_repo_detail">RepoDetailActivity</string>
<string name="tab_text_info">Details</string>
<string name="tab_text_files">Files</string>
<string name="tab_text_issues">Open Issues</string>
<string name="tabItemCloseIssues">Closed Issues</string>
<string name="tab_text_ml">Milestones</string>
<string name="tab_text_releases">Releases</string>
<string name="tab_text_branches">Branches</string>
<string name="tab_text_labels">Labels</string>
<string name="action_settings">تنظیمات</string>
<string name="tab_text_collaborators">Collaborators</string>
<string name="noDataIssueTab">No issues found</string>
<string name="infoTabRepoName1">Repository</string>
<string name="infoTabRepoOwner1">مالک</string>
<string name="infoTabRepoDesc">Description</string>
<string name="infoTabRepoWebsite">Website</string>
<string name="infoTabRepoSize">Size</string>
<string name="infoTabRepoDefaultBranch">Default Branch</string>
<string name="infoTabRepoSshUrl">SSH URL</string>
<string name="infoTabRepoCloneUrl">Clone URL</string>
<string name="infoTabRepoRepoUrl">Repo URL</string>
<string name="infoTabRepoForksCount">Forks</string>
<string name="infoTabRepoCreatedAt">Created</string>
<string name="infoTabRepoUpdatedAt">Last Updated</string>
<string name="timeAtText">at</string>
<string name="createdText">Opened\u0020</string>
<string name="dueDateText">Due Date</string>
<string name="issueStatusTextOpen">Status: open</string>
<string name="issueStatusOpen">open</string>
<string name="issueStatusTextClosed">Status: closed</string>
<string name="issueStatusClosed">closed</string>
<string name="issueCreator">Creator :\u0020</string>
<string name="issueAssigneesText">Assignees</string>
<string name="issueTypeIssue">Type: Issue</string>
<string name="issueTypePullRequest">Type: Pull Request</string>
<string name="issueCommenter">Commenter:\u0020</string>
<string name="issueMilestone">Milestone %1$s</string>
<string name="dueDate">Due %1$s</string>
<string name="createdTime">Opened %1$s</string>
<string name="assignedTo">Assigned to: %1$s</string>
<string name="commentButtonText">Comment</string>
<string name="commentEmptyError">Please write your comment</string>
<string name="commentSuccess">Comment posted</string>
<string name="commentError">Something went wrong, please try again</string>
<string name="generalImgContentText">Avatar</string>
<string name="noDataMilestonesTab">No milestones found</string>
<string name="commitAuthor">Commit author: %1$s</string>
<string name="commitHash">Commit hash \n%1$s%2$s</string>
<string name="releaseTitle">Release Title</string>
<string name="releaseDescription">Release Description</string>
<string name="releaseDownloadText">Downloads</string>
<string name="releaseType">Release Type</string>
<string name="releaseZip">Release Zip</string>
<string name="releaseTar">Release Tar</string>
<string name="noDataReleasesTab">No releases found</string>
<string name="releaseTag">Tag: %1$s</string>
<string name="collaboratorsNameToast">Collaborator : %1$s</string>
<string name="noDataCollaboratorTab">No collaborators found</string>
<string name="editText">Edit</string>
<string name="newMilestoneTitle">Title</string>
<string name="newMilestoneDescription">Description</string>
<string name="newMilestoneDueDate">Due Date</string>
<string name="milestoneNameErrorEmpty">Milestone title is empty</string>
<string name="milestoneNameErrorInvalid">Milestone title is not valid. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="milestoneDescError">Milestone description exceeds the max 255 characters limit</string>
<string name="milestoneCreated">Milestone created successfully</string>
<string name="milestoneCreatedError">Something went wrong, please try again</string>
<string name="milestoneDateEmpty">Please choose due date</string>
<string name="milestoneOpenIssues">Open issues : %1$d</string>
<string name="milestoneClosedIssues">Closed issues : %1$d</string>
<string name="newIssueSelectAssigneesListTitle">Select Assignees</string>
<string name="newIssueSelectLabelsListTitle">Select Labels</string>
<string name="newIssueDialogDone">Done</string>
<string name="newIssueDialogCancel">Cancel</string>
<string name="newIssueTitle">Title</string>
<string name="newIssueAssigneesListTitle">Assignees</string>
<string name="newIssueDescriptionTitle">Description</string>
<string name="newIssueDueDateTitle">Due Date</string>
<string name="newIssueMilestoneTitle">Milestone</string>
<string name="newIssueLabelsTitle">Labels</string>
<string name="issueTitleEmpty">Issue title is empty</string>
<string name="issueDescriptionEmpty">Issue description is empty</string>
<string name="issueCreated">New issue created successfully</string>
<string name="issueCreatedError">Something went wrong, please try again</string>
<string name="noAssigneesFound">No collaborators found</string>
<string name="noLabelsFound">No labels found</string>
<!-- settings -->
<string name="settingsLanguageHeaderText">Translation</string>
<string name="settingsDateTimeHeaderText">Date &amp; Time</string>
<string name="settingsSave">Settings saved.</string>
<string name="settingsLanguageSelectorHeader">Language</string>
<string name="settingsLanguageSelectedHeaderDefault">English</string>
<string name="settingsAppearanceHeader">Appearance</string>
<string name="settingsDateTimeHeaderDefault">Pretty</string>
<string name="settingsLanguageSelectorDialogTitle">Choose Language</string>
<string name="settingsTimeSelectorDialogTitle">Choose Time Format</string>
<string name="settingsIssueBadgeHeaderText">Issues Badge</string>
<string name="settingsHelpTranslateText">Help us translate GitNex to your language</string>
<string name="codeBlockHeaderText">Code Block Color</string>
<string name="settingsCodeBlockSelectorDialogTitle">Code Block Color Selector</string>
<string name="settingsHomeScreenHeaderText">Home Screen</string>
<string name="settingsHomeScreenSelectedText">مخازن من</string>
<string name="settingshomeScreenSelectorDialogTitle">Select Home Screen</string>
<!-- settings -->
<string name="noMoreData">No more data available</string>
<string name="createLabel">برچسب جدید</string>
<string name="menuTitleText">Repo Menu</string>
<string name="labelName">Label Name</string>
<string name="labelColor">Label Color</string>
<string name="labelEmptyError">Label name is empty</string>
<string name="labelNameError">Label name is not valid</string>
<string name="labelCreated">Label created.</string>
<string name="labelGeneralError">Something went wrong, please try again</string>
<string name="labelUpdated">Label updated.</string>
<string name="noDataLabelsTab">No labels found</string>
<string name="labelMenuContentDesc">Desc</string>
<string name="labelMenuEdit">Edit</string>
<string name="labelMenuDelete">Delete</string>
<string name="labelDeleteText">Label deleted</string>
<string name="labelDeleteErrorText">Something went wrong, please try again</string>
<string name="noDataBranchesTab">No branches found</string>
<string name="creditsLogoDesign">Design</string>
<!-- credits - this part does not need translation -->
<!-- credits - this part does not need translation -->
<string name="alertDialogTokenRevokedTitle">Authorization Error</string>
<string name="alertDialogTokenRevokedMessage">It seems that the Access Token is revoked OR your are not allowed to see these contents. In case of revoked Token, please logout and login again</string>
<string name="alertDialogTokenRevokedCopyNegativeButton">Cancel</string>
<string name="alertDialogTokenRevokedCopyPositiveButton">خروج از حساب کاربری</string>
<string name="labelDeleteTitle">Delete\u0020</string>
<string name="labelDeleteMessage">Do you really want to delete this label?</string>
<string name="labelDeletePositiveButton">OK</string>
<string name="labelDeleteNegativeButton">Cancel</string>
<!-- org tabbed layout str -->
<string name="title_activity_org_detail">OrgDetailActivity</string>
<string name="orgTabRepos">مخازن</string>
<string name="orgTabTeams">Teams</string>
<string name="orgTabMembers">Members</string>
<string name="orgCreateTeam">تیم جدید</string>
<string name="noDataTeams">No teams found</string>
<string name="teamTitle">Team name</string>
<string name="teamDescription">Team desc</string>
<string name="teamPermission">Permission : %1$s</string>
<string name="noDataMembers">No members found</string>
<string name="orgMember">Org members</string>
<string name="orgTeamMembers">Organization team members</string>
<!-- org tabbed layout str -->
<!-- create team -->
<string name="newTeamTitle">Team Name</string>
<string name="newTeamDesc">Description</string>
<string name="newTeamPermission">Permission</string>
<string name="newTeamAccessControls">Access Controls</string>
<string name="newTeamPermissionRead">Members can view and clone team repositories</string>
<string name="newTeamPermissionWrite">Members can read and push to team repositories</string>
<string name="newTeamPermissionAdmin">Members can pull and push to team repositories and add collaborators to them</string>
<string name="teamNameEmpty">Please enter team name</string>
<string name="teamNameError">Team name should contain only alphanumeric, dash (-), underscore (_) and dot (.) characters</string>
<string name="teamPermissionEmpty">Please select permission</string>
<string name="teamDescError">Team description have illegal characters</string>
<string name="teamDescLimit">Team description have more than 100 characters</string>
<string name="teamCreated">Team created successfully</string>
<string name="teamCreatedError">Something went wrong, please try again</string>
<!-- create team -->
<!-- edit comment -->
<string name="editCommentTitle">Edit Comment</string>
<string name="editCommentButtonText">Edit</string>
<string name="editCommentUpdatedText">Comment updated</string>
<!-- edit comment -->
<!-- add collaborator -->
<string name="addCollaboratorTitle">Add / Remove Collaborator</string>
<string name="addCollaboratorSearchHint">Search users</string>
<string name="addCollaboratorViewUserDesc">Username</string>
<string name="removeCollaboratorTitle">Remove\u0020</string>
<string name="removeCollaboratorMessage">Do you want to remove this user from the repository?</string>
<string name="removeCollaboratorToastText">User removed from the repository.</string>
<string name="addCollaboratorToastText">User added to the repository.</string>
<!-- add collaborator -->
<!-- profile section -->
<string name="profileTabFollowers">Followers</string>
<string name="profileTabFollowing">Following</string>
<string name="profileCreateNewEmailAddress">افزدون پست الکترونیکی</string>
<string name="profileEmailButton">Save</string>
<string name="profileEmailTitle">Email Address</string>
<string name="emailAddedText">New email added successfully.</string>
<string name="emailErrorEmpty">Email address is empty.</string>
<string name="emailErrorInvalid">Email address is not valid</string>
<string name="emailErrorInUse">Email address is already in use</string>
<string name="emailTypeText">Primary</string>
<string name="profileTabEmails">Emails</string>
<!-- profile section -->
<!-- single issue section -->
<string name="singleIssueEditLabels">Add / Remove Labels</string>
<string name="labelsUpdated">Labels updated</string>
<string name="closeIssue">Close Issue</string>
<string name="replyToIssue">Add Comment</string>
<string name="editIssue">Edit Issue</string>
<string name="reOpenIssue">Reopen Issue</string>
<string name="issueStateClosed">Issue closed</string>
<string name="issueStateReopened">Issue reopened</string>
<string name="addRemoveAssignees2">Add Assignees</string>
<string name="addRemoveAssignees">Add / Remove Assignees</string>
<string name="assigneesUpdated">Assignees updated</string>
<!-- single issue section -->
<!-- multi select dialog -->
<string name="select_entry">Select Entries</string>
<string name="validation_text">Please select at least one option</string>
<string name="please_select_atleast">Please select at least </string>
<string name="you_can_only_select_upto">You can only select up to </string>
<string name="option"> option</string>
<string name="options"> options</string>
<string name="select_all">Select all</string>
<string name="de_select_all">Deselect all</string>
<!-- multi select dialog -->
<string name="repoMetaData">Repository Meta</string>
<!-- admin -->
<string name="adminCreateNewUser">Add New User</string>
<string name="adminUsers">Users</string>
<string name="userRoleAdmin">Admin</string>
<!-- admin -->
<!-- create user -->
<string name="userFullNameText">Full Name</string>
<string name="userEmail">Email</string>
<string name="userUserName">Username</string>
<string name="userPassword">Password</string>
<string name="userInvalidFullName">Invalid Full Name</string>
<string name="userInvalidUserName">Invalid Username</string>
<string name="userInvalidEmail">Invalid Email</string>
<string name="userCreatedText">New user added successfully</string>
<string name="userExistsError">User already exists</string>
<!-- create user -->
<!-- sponsors -->
<!-- sponsors -->
<!-- edit issue -->
<string name="editIssueNavHeader">Edit Issue #%1$s</string>
<string name="editIssueSuccessMessage">Issue updated.</string>
<!-- edit issue -->
<!-- release -->
<string name="createRelease">New Release</string>
<string name="releaseTagNameText">Tag Name</string>
<string name="releaseTitleText">Title</string>
<string name="releaseContentText">Content</string>
<string name="releaseTypeText">Mark as Pre-Release</string>
<string name="releaseBranchText">Select Branch</string>
<string name="releaseDraftText">Draft</string>
<string name="tagNameErrorEmpty">Tag name is empty</string>
<string name="titleErrorEmpty">Title is empty</string>
<string name="releaseCreatedText">New release created</string>
<!-- release -->
<string name="loginOTPError">Enter OTP code</string>
<string name="loginOTPTypeError">OTP code should be numbers.</string>
<string name="loginOTP">OTP Code (Optional)</string>
<string name="otpMessage">Enter the otp code if 2FA is enabled</string>
<string name="openWebRepo">Open in Browser</string>
<string name="repoStargazersInMenu">Stargazers</string>
<string name="repoWatchersInMenu">Watchers</string>
<string name="noDataStargazers">No stars found</string>
<string name="noDataWatchers">No watchers found</string>
<string name="starMember">Star</string>
<string name="watcherMember">Watcher</string>
<string name="commitLinkBranchesTab">Commit</string>
<string name="zipArchiveDownloadReleasesTab">Zip Archive</string>
<string name="tarArchiveDownloadReleasesTab">Tar Archive</string>
<!-- new file -->
<string name="newFileNameTintCopy">File Name</string>
<string name="newFileBranchTintCopy">New Branch Name</string>
<string name="newFileContentTintCopy">File Content</string>
<string name="newFileButtonCopy">Create New File</string>
<string name="newFileNameHintMessage">with folder: app/test.md</string>
<string name="newFileMessageTintCopy">Commit Message</string>
<string name="newFileInvalidBranchName">Invalid branch name, may only contain &#8211;, a&#8211;z, 0&#8211;9</string>
<string name="newFileCommitMessageError">Commit message is too long</string>
<string name="newFileSuccessMessage">New file created</string>
<string name="newFileOldBranches">Current Branches</string>
<string name="newFileRequiredFields">Fields like filename, content and commit message are required</string>
<string name="newFileCurrentBranchMessage">Selecting current branch will disable new branch</string>
<string name="newFileNewBranchMessage">e.g: new-branch</string>
<string name="newFileRequiredFieldNewBranchName">New branch name cannot be empty if current branch is not selected</string>
<string name="strFilter">Filter</string>
<string name="copyIssueUrl">Copy Issue URL</string>
<string name="copyIssueUrlToastMsg">Issue URL copied to clipboard</string>
<string name="milestoneCompletion">%1$d\uFF05 completed</string>
<!-- files -->
<string name="noDataFilesTab">No files found</string>
<string name="filesDirNotSupportedYet">Directory browsing is not supported yet</string>
<string name="filesGenericError">Sorry this file cannot be viewed as API returned an error</string>
<string name="filesBreadcrumb">Root</string>
<!-- generic copy -->
<string name="okButton">OK</string>
<string name="doneButton">Done</string>
<string name="cancelButton">Cancel</string>
<string name="genericError">Something went wrong, please try again</string>
<string name="apiNotFound">This request needs higher Gitea version than the one installed. Please upgrade your instance to the latest version of Gitea.</string>
<string name="noDataFound">No data found</string>
<string name="addButton">Add</string>
<string name="removeButton">Remove</string>
<string name="authorizeError">You are not authorized to perform this action.</string>
<string name="menuContentDesc">Menu</string>
<string name="menuEditText">Edit</string>
<string name="menuDeleteText">Delete</string>
<string name="modifiedText">edited</string>
<string name="saveButton">Save</string>
<string name="nameText">Name</string>
<string name="descriptionText">Description</string>
<string name="websiteText">Website</string>
<string name="locationText">Location</string>
<string name="characters255Limit">حداکثر 255 کاراکتر</string>
<string name="emptyFields">All fields are required</string>
<!-- generic copy -->
<string name="translateText">Translate GitNex with Crowdin</string>
<string name="exploreTextBoxHint">Explore repositories</string>
<string name="starRepository">Star Repository</string>
<string name="unStarRepository">Unstar Repository</string>
<string name="starRepositorySuccess">Repository added to starred list</string>
<string name="unStarRepositorySuccess">Repository removed from starred list</string>
<string name="watchRepository">Watch Repository</string>
<string name="unWatchRepository">Unwatch Repository</string>
<string name="watchRepositorySuccess">Repository added to watch list</string>
<string name="unWatchRepositorySuccess">Repository removed from watch list</string>
</resources>

View File

@ -0,0 +1,412 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources>
<!-- menu items -->
<string name="navMyRepos">Reponi</string>
<string name="navStarredRepos">Suosikki Repot</string>
<string name="navRepos">Repot</string>
<string name="navProfile">Profiili</string>
<string name="navSettings">Asetukset</string>
<string name="navOrgs">Organisaatiot</string>
<string name="navAbout">Tietoja</string>
<string name="navRate">Anna palautetta</string>
<string name="navLogout">Kirjaudu ulos</string>
<string name="navExplore">Explore</string>
<!-- menu items -->
<!-- page titles -->
<string name="pageTitleAbout">Tietoja</string>
<string name="pageTitleHome">Koti</string>
<string name="pageTitleMyRepos">Omat Repot</string>
<string name="pageTitleRepositories">Repot</string>
<string name="pageTitleProfile">Profiili</string>
<string name="pageTitleNewRepo">Uusi Repo</string>
<string name="pageTitleOrganizations">Organisaatiot</string>
<string name="pageTitleIssues">Ongelmat</string>
<string name="pageTitleSettings">Asetukset</string>
<string name="pageTitleCreateOrganization">Uusi organisaatio</string>
<string name="pageTitleCreateMilestone">Uusi tavoite</string>
<string name="pageTitleCreateNewIssue">Uusi ongelma</string>
<string name="pageTitleCreateLabel">Uusi tunniste</string>
<string name="pageTitleCredits">Tekijät</string>
<string name="pageTitleLabelUpdate">Päivitä tunnisteita</string>
<string name="pageTitleSponsors">Sponsorit</string>
<string name="pageTitleStarredRepos">Suosikki Repot</string>
<string name="pageTitleCreateTeam">Uusi tiimi</string>
<string name="pageTitleAddEmail">Lisää sähköpostiosoite</string>
<string name="pageTitleNewFile">Uusi tiedosto</string>
<string name="pageTitleExplore">Explore</string>
<!-- page titles -->
<string name="appVersion">Versio\u0020:\u0020</string>
<string name="appBuild">Alaversio \u0020:\u0020</string>
<string name="repoName">Demo repo</string>
<string name="repoFullname">Repo with ORG</string>
<string name="repoDescription">Demo kuvaus</string>
<string name="noData">Repoja ei löytynyt</string>
<string name="orgName">Demo organisaatio</string>
<string name="orgDescription">Demo kuvaus</string>
<string name="noDataOrg">Yhtään organisaatiota ei löytynyt</string>
<string name="newCreateButtonCopy">Luo</string>
<string name="newUpdateButtonCopy">Päivitä</string>
<string name="newRepoTintCopy">Repon nimi</string>
<string name="newRepoDescTintCopy">Repon kuvaus</string>
<string name="newRepoPrivateCopy">Yksityinen</string>
<string name="newRepoDescInfo">Enintään 255 merkkiä</string>
<string name="newRepoOwner">Omistaja</string>
<string name="newOrgTintCopy">Organisaation nimi</string>
<string name="newOrgDescTintCopy">Organisaation kuvaus</string>
<string name="newOrgDescInfo">Enintään 255 merkkiä</string>
<string name="userName">Käyttäjätunnus</string>
<string name="passWord">Salasana</string>
<string name="btnLogin">LOGIN</string>
<string name="instanceUrl">Instance URL</string>
<string name="navigation_drawer_open">Open Navigation Drawer</string>
<string name="navigation_drawer_close">Close Navigation Drawer</string>
<string name="logo">Login to Gitea</string>
<string name="urlInfoTooltip">1- Choose the correct protocol(https or http). \n2- Enter Gitea url e.g: try.gitea.io. \n3- If you have enabled 2FA for your account, enter the code in the OTP Code field. \n4- For HTTP basic auth use USERNAME@DOMAIN.COM in the URL field.</string>
<string name="loginFailed">Wrong username/password</string>
<string name="protocolError">It is not recommended to use HTTP protocol unless you are testing on local network.</string>
<string name="malformedJson">Malformed JSON was received. Server response was not successful.</string>
<string name="emptyFieldURL">Instance URL is required</string>
<string name="emptyFieldUsername">Username is required</string>
<string name="emptyFieldPassword">Password is required</string>
<string name="checkNetConnection">Cannot access network, please check your Internet connection</string>
<string name="repoNameErrorEmpty">Repository name is empty</string>
<string name="repoNameErrorInvalid">Repository name is not valid. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="repoDescError">Repository description exceeds the max 255 characters limit</string>
<string name="repoCreated">Repository created successfully</string>
<string name="repoCreatedError">Something went wrong, please try again</string>
<string name="repoExistsError">Repository of this name already exists under selected Owner</string>
<string name="orgNameErrorEmpty">Organization name is empty</string>
<string name="orgNameErrorInvalid">Organization name is not valid, [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="orgDescError">Organization description exceeds the max 255 characters limit</string>
<string name="orgCreated">Organization created successfully</string>
<string name="orgCreatedError">Something went wrong, please try again</string>
<string name="orgExistsError">Organization already exists</string>
<string name="processingText">Processing</string>
<string name="search">Search</string>
<string name="wip">Work in progress</string>
<string name="close">Close</string>
<string name="addNewContent">Add</string>
<string name="orgContentAvatar">Org</string>
<string name="repoContentAvatar">Repo</string>
<string name="privateAvatar">Pri</string>
<string name="removeContent">Remove</string>
<string name="genericApiStatusError">Instance has returned an error. Code\u0020</string>
<string name="title_activity_repo_detail">RepoDetailActivity</string>
<string name="tab_text_info">Details</string>
<string name="tab_text_files">Files</string>
<string name="tab_text_issues">Open Issues</string>
<string name="tabItemCloseIssues">Closed Issues</string>
<string name="tab_text_ml">Milestones</string>
<string name="tab_text_releases">Releases</string>
<string name="tab_text_branches">Branches</string>
<string name="tab_text_labels">Labels</string>
<string name="action_settings">Settings</string>
<string name="tab_text_collaborators">Collaborators</string>
<string name="noDataIssueTab">No issues found</string>
<string name="infoTabRepoName1">Repository</string>
<string name="infoTabRepoOwner1">Owner</string>
<string name="infoTabRepoDesc">Kuvaus</string>
<string name="infoTabRepoWebsite">Verkkosivusto</string>
<string name="infoTabRepoSize">Koko</string>
<string name="infoTabRepoDefaultBranch">Olutus haara</string>
<string name="infoTabRepoSshUrl">SSH URL</string>
<string name="infoTabRepoCloneUrl">Kopiointi URL</string>
<string name="infoTabRepoRepoUrl">Repo URL</string>
<string name="infoTabRepoForksCount">Forks</string>
<string name="infoTabRepoCreatedAt">Created</string>
<string name="infoTabRepoUpdatedAt">Last Updated</string>
<string name="timeAtText">at</string>
<string name="createdText">Opened\u0020</string>
<string name="dueDateText">Due Date</string>
<string name="issueStatusTextOpen">Status: open</string>
<string name="issueStatusOpen">open</string>
<string name="issueStatusTextClosed">Status: closed</string>
<string name="issueStatusClosed">closed</string>
<string name="issueCreator">Creator :\u0020</string>
<string name="issueAssigneesText">Assignees</string>
<string name="issueTypeIssue">Type: Issue</string>
<string name="issueTypePullRequest">Type: Pull Request</string>
<string name="issueCommenter">Commenter:\u0020</string>
<string name="issueMilestone">Milestone %1$s</string>
<string name="dueDate">Due %1$s</string>
<string name="createdTime">Opened %1$s</string>
<string name="assignedTo">Assigned to: %1$s</string>
<string name="commentButtonText">Comment</string>
<string name="commentEmptyError">Please write your comment</string>
<string name="commentSuccess">Comment posted</string>
<string name="commentError">Something went wrong, please try again</string>
<string name="generalImgContentText">Avatar</string>
<string name="noDataMilestonesTab">No milestones found</string>
<string name="commitAuthor">Commit author: %1$s</string>
<string name="commitHash">Commit hash \n%1$s%2$s</string>
<string name="releaseTitle">Release Title</string>
<string name="releaseDescription">Release Description</string>
<string name="releaseDownloadText">Downloads</string>
<string name="releaseType">Release Type</string>
<string name="releaseZip">Release Zip</string>
<string name="releaseTar">Release Tar</string>
<string name="noDataReleasesTab">No releases found</string>
<string name="releaseTag">Tag: %1$s</string>
<string name="collaboratorsNameToast">Collaborator : %1$s</string>
<string name="noDataCollaboratorTab">No collaborators found</string>
<string name="editText">Edit</string>
<string name="newMilestoneTitle">Title</string>
<string name="newMilestoneDescription">Description</string>
<string name="newMilestoneDueDate">Due Date</string>
<string name="milestoneNameErrorEmpty">Milestone title is empty</string>
<string name="milestoneNameErrorInvalid">Milestone title is not valid. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="milestoneDescError">Milestone description exceeds the max 255 characters limit</string>
<string name="milestoneCreated">Milestone created successfully</string>
<string name="milestoneCreatedError">Something went wrong, please try again</string>
<string name="milestoneDateEmpty">Please choose due date</string>
<string name="milestoneOpenIssues">Open issues : %1$d</string>
<string name="milestoneClosedIssues">Closed issues : %1$d</string>
<string name="newIssueSelectAssigneesListTitle">Select Assignees</string>
<string name="newIssueSelectLabelsListTitle">Select Labels</string>
<string name="newIssueDialogDone">Done</string>
<string name="newIssueDialogCancel">Cancel</string>
<string name="newIssueTitle">Title</string>
<string name="newIssueAssigneesListTitle">Assignees</string>
<string name="newIssueDescriptionTitle">Description</string>
<string name="newIssueDueDateTitle">Due Date</string>
<string name="newIssueMilestoneTitle">Milestone</string>
<string name="newIssueLabelsTitle">Labels</string>
<string name="issueTitleEmpty">Issue title is empty</string>
<string name="issueDescriptionEmpty">Issue description is empty</string>
<string name="issueCreated">New issue created successfully</string>
<string name="issueCreatedError">Something went wrong, please try again</string>
<string name="noAssigneesFound">No collaborators found</string>
<string name="noLabelsFound">No labels found</string>
<!-- settings -->
<string name="settingsLanguageHeaderText">Translation</string>
<string name="settingsDateTimeHeaderText">Date &amp; Time</string>
<string name="settingsSave">Settings saved.</string>
<string name="settingsLanguageSelectorHeader">Language</string>
<string name="settingsLanguageSelectedHeaderDefault">English</string>
<string name="settingsAppearanceHeader">Appearance</string>
<string name="settingsDateTimeHeaderDefault">Pretty</string>
<string name="settingsLanguageSelectorDialogTitle">Choose Language</string>
<string name="settingsTimeSelectorDialogTitle">Choose Time Format</string>
<string name="settingsIssueBadgeHeaderText">Issues Badge</string>
<string name="settingsHelpTranslateText">Help us translate GitNex to your language</string>
<string name="codeBlockHeaderText">Code Block Color</string>
<string name="settingsCodeBlockSelectorDialogTitle">Code Block Color Selector</string>
<string name="settingsHomeScreenHeaderText">Home Screen</string>
<string name="settingsHomeScreenSelectedText">My Repositories</string>
<string name="settingshomeScreenSelectorDialogTitle">Select Home Screen</string>
<!-- settings -->
<string name="noMoreData">No more data available</string>
<string name="createLabel">New Label</string>
<string name="menuTitleText">Repo Menu</string>
<string name="labelName">Label Name</string>
<string name="labelColor">Label Color</string>
<string name="labelEmptyError">Label name is empty</string>
<string name="labelNameError">Label name is not valid</string>
<string name="labelCreated">Label created.</string>
<string name="labelGeneralError">Something went wrong, please try again</string>
<string name="labelUpdated">Label updated.</string>
<string name="noDataLabelsTab">No labels found</string>
<string name="labelMenuContentDesc">Desc</string>
<string name="labelMenuEdit">Edit</string>
<string name="labelMenuDelete">Delete</string>
<string name="labelDeleteText">Label deleted</string>
<string name="labelDeleteErrorText">Something went wrong, please try again</string>
<string name="noDataBranchesTab">No branches found</string>
<string name="creditsLogoDesign">Design</string>
<!-- credits - this part does not need translation -->
<!-- credits - this part does not need translation -->
<string name="alertDialogTokenRevokedTitle">Authorization Error</string>
<string name="alertDialogTokenRevokedMessage">It seems that the Access Token is revoked OR your are not allowed to see these contents. In case of revoked Token, please logout and login again</string>
<string name="alertDialogTokenRevokedCopyNegativeButton">Cancel</string>
<string name="alertDialogTokenRevokedCopyPositiveButton">Logout</string>
<string name="labelDeleteTitle">Delete\u0020</string>
<string name="labelDeleteMessage">Do you really want to delete this label?</string>
<string name="labelDeletePositiveButton">OK</string>
<string name="labelDeleteNegativeButton">Cancel</string>
<!-- org tabbed layout str -->
<string name="title_activity_org_detail">OrgDetailActivity</string>
<string name="orgTabRepos">Repositories</string>
<string name="orgTabTeams">Teams</string>
<string name="orgTabMembers">Members</string>
<string name="orgCreateTeam">New Team</string>
<string name="noDataTeams">No teams found</string>
<string name="teamTitle">Team name</string>
<string name="teamDescription">Team desc</string>
<string name="teamPermission">Permission : %1$s</string>
<string name="noDataMembers">No members found</string>
<string name="orgMember">Org members</string>
<string name="orgTeamMembers">Organization team members</string>
<!-- org tabbed layout str -->
<!-- create team -->
<string name="newTeamTitle">Team Name</string>
<string name="newTeamDesc">Description</string>
<string name="newTeamPermission">Permission</string>
<string name="newTeamAccessControls">Access Controls</string>
<string name="newTeamPermissionRead">Members can view and clone team repositories</string>
<string name="newTeamPermissionWrite">Members can read and push to team repositories</string>
<string name="newTeamPermissionAdmin">Members can pull and push to team repositories and add collaborators to them</string>
<string name="teamNameEmpty">Please enter team name</string>
<string name="teamNameError">Team name should contain only alphanumeric, dash (-), underscore (_) and dot (.) characters</string>
<string name="teamPermissionEmpty">Please select permission</string>
<string name="teamDescError">Team description have illegal characters</string>
<string name="teamDescLimit">Team description have more than 100 characters</string>
<string name="teamCreated">Team created successfully</string>
<string name="teamCreatedError">Something went wrong, please try again</string>
<!-- create team -->
<!-- edit comment -->
<string name="editCommentTitle">Edit Comment</string>
<string name="editCommentButtonText">Edit</string>
<string name="editCommentUpdatedText">Comment updated</string>
<!-- edit comment -->
<!-- add collaborator -->
<string name="addCollaboratorTitle">Add / Remove Collaborator</string>
<string name="addCollaboratorSearchHint">Search users</string>
<string name="addCollaboratorViewUserDesc">Username</string>
<string name="removeCollaboratorTitle">Remove\u0020</string>
<string name="removeCollaboratorMessage">Do you want to remove this user from the repository?</string>
<string name="removeCollaboratorToastText">User removed from the repository.</string>
<string name="addCollaboratorToastText">User added to the repository.</string>
<!-- add collaborator -->
<!-- profile section -->
<string name="profileTabFollowers">Followers</string>
<string name="profileTabFollowing">Following</string>
<string name="profileCreateNewEmailAddress">Add Email Address</string>
<string name="profileEmailButton">Save</string>
<string name="profileEmailTitle">Email Address</string>
<string name="emailAddedText">New email added successfully.</string>
<string name="emailErrorEmpty">Email address is empty.</string>
<string name="emailErrorInvalid">Email address is not valid</string>
<string name="emailErrorInUse">Email address is already in use</string>
<string name="emailTypeText">Primary</string>
<string name="profileTabEmails">Emails</string>
<!-- profile section -->
<!-- single issue section -->
<string name="singleIssueEditLabels">Add / Remove Labels</string>
<string name="labelsUpdated">Labels updated</string>
<string name="closeIssue">Close Issue</string>
<string name="replyToIssue">Add Comment</string>
<string name="editIssue">Edit Issue</string>
<string name="reOpenIssue">Reopen Issue</string>
<string name="issueStateClosed">Issue closed</string>
<string name="issueStateReopened">Issue reopened</string>
<string name="addRemoveAssignees2">Add Assignees</string>
<string name="addRemoveAssignees">Add / Remove Assignees</string>
<string name="assigneesUpdated">Assignees updated</string>
<!-- single issue section -->
<!-- multi select dialog -->
<string name="select_entry">Select Entries</string>
<string name="validation_text">Please select at least one option</string>
<string name="please_select_atleast">Please select at least </string>
<string name="you_can_only_select_upto">You can only select up to </string>
<string name="option"> option</string>
<string name="options"> options</string>
<string name="select_all">Select all</string>
<string name="de_select_all">Deselect all</string>
<!-- multi select dialog -->
<string name="repoMetaData">Repository Meta</string>
<!-- admin -->
<string name="adminCreateNewUser">Add New User</string>
<string name="adminUsers">Users</string>
<string name="userRoleAdmin">Admin</string>
<!-- admin -->
<!-- create user -->
<string name="userFullNameText">Full Name</string>
<string name="userEmail">Email</string>
<string name="userUserName">Username</string>
<string name="userPassword">Password</string>
<string name="userInvalidFullName">Invalid Full Name</string>
<string name="userInvalidUserName">Invalid Username</string>
<string name="userInvalidEmail">Invalid Email</string>
<string name="userCreatedText">New user added successfully</string>
<string name="userExistsError">User already exists</string>
<!-- create user -->
<!-- sponsors -->
<!-- sponsors -->
<!-- edit issue -->
<string name="editIssueNavHeader">Edit Issue #%1$s</string>
<string name="editIssueSuccessMessage">Issue updated.</string>
<!-- edit issue -->
<!-- release -->
<string name="createRelease">New Release</string>
<string name="releaseTagNameText">Tag Name</string>
<string name="releaseTitleText">Title</string>
<string name="releaseContentText">Content</string>
<string name="releaseTypeText">Mark as Pre-Release</string>
<string name="releaseBranchText">Select Branch</string>
<string name="releaseDraftText">Draft</string>
<string name="tagNameErrorEmpty">Tag name is empty</string>
<string name="titleErrorEmpty">Title is empty</string>
<string name="releaseCreatedText">New release created</string>
<!-- release -->
<string name="loginOTPError">Enter OTP code</string>
<string name="loginOTPTypeError">OTP code should be numbers.</string>
<string name="loginOTP">OTP Code (Optional)</string>
<string name="otpMessage">Enter the otp code if 2FA is enabled</string>
<string name="openWebRepo">Open in Browser</string>
<string name="repoStargazersInMenu">Stargazers</string>
<string name="repoWatchersInMenu">Watchers</string>
<string name="noDataStargazers">No stars found</string>
<string name="noDataWatchers">No watchers found</string>
<string name="starMember">Star</string>
<string name="watcherMember">Watcher</string>
<string name="commitLinkBranchesTab">Commit</string>
<string name="zipArchiveDownloadReleasesTab">Zip Archive</string>
<string name="tarArchiveDownloadReleasesTab">Tar Archive</string>
<!-- new file -->
<string name="newFileNameTintCopy">File Name</string>
<string name="newFileBranchTintCopy">New Branch Name</string>
<string name="newFileContentTintCopy">File Content</string>
<string name="newFileButtonCopy">Create New File</string>
<string name="newFileNameHintMessage">with folder: app/test.md</string>
<string name="newFileMessageTintCopy">Commit Message</string>
<string name="newFileInvalidBranchName">Invalid branch name, may only contain &#8211;, a&#8211;z, 0&#8211;9</string>
<string name="newFileCommitMessageError">Commit message is too long</string>
<string name="newFileSuccessMessage">New file created</string>
<string name="newFileOldBranches">Current Branches</string>
<string name="newFileRequiredFields">Fields like filename, content and commit message are required</string>
<string name="newFileCurrentBranchMessage">Selecting current branch will disable new branch</string>
<string name="newFileNewBranchMessage">e.g: new-branch</string>
<string name="newFileRequiredFieldNewBranchName">New branch name cannot be empty if current branch is not selected</string>
<string name="strFilter">Filter</string>
<string name="copyIssueUrl">Copy Issue URL</string>
<string name="copyIssueUrlToastMsg">Issue URL copied to clipboard</string>
<string name="milestoneCompletion">%1$d\uFF05 completed</string>
<!-- files -->
<string name="noDataFilesTab">No files found</string>
<string name="filesDirNotSupportedYet">Directory browsing is not supported yet</string>
<string name="filesGenericError">Sorry this file cannot be viewed as API returned an error</string>
<string name="filesBreadcrumb">Root</string>
<!-- generic copy -->
<string name="okButton">OK</string>
<string name="doneButton">Done</string>
<string name="cancelButton">Cancel</string>
<string name="genericError">Something went wrong, please try again</string>
<string name="apiNotFound">This request needs higher Gitea version than the one installed. Please upgrade your instance to the latest version of Gitea.</string>
<string name="noDataFound">No data found</string>
<string name="addButton">Add</string>
<string name="removeButton">Remove</string>
<string name="authorizeError">You are not authorized to perform this action.</string>
<string name="menuContentDesc">Menu</string>
<string name="menuEditText">Edit</string>
<string name="menuDeleteText">Delete</string>
<string name="modifiedText">edited</string>
<string name="saveButton">Save</string>
<string name="nameText">Name</string>
<string name="descriptionText">Description</string>
<string name="websiteText">Website</string>
<string name="locationText">Location</string>
<string name="characters255Limit">Max 255 characters</string>
<string name="emptyFields">All fields are required</string>
<!-- generic copy -->
<string name="translateText">Translate GitNex with Crowdin</string>
<string name="exploreTextBoxHint">Explore repositories</string>
<string name="starRepository">Star Repository</string>
<string name="unStarRepository">Unstar Repository</string>
<string name="starRepositorySuccess">Repository added to starred list</string>
<string name="unStarRepositorySuccess">Repository removed from starred list</string>
<string name="watchRepository">Watch Repository</string>
<string name="unWatchRepository">Unwatch Repository</string>
<string name="watchRepositorySuccess">Repository added to watch list</string>
<string name="unWatchRepositorySuccess">Repository removed from watch list</string>
</resources>

View File

@ -1,458 +1,412 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources>
<!-- menu items -->
<string name="navMyRepos">My Repositories</string>
<string name="navStarredRepos">Starred Repositories</string>
<string name="navMyRepos">Mes dépôts</string>
<string name="navStarredRepos">Dépôts favoris</string>
<string name="navRepos">Dépôts</string>
<string name="navProfile">Profil</string>
<string name="navSettings">Réglages</string>
<string name="navOrgs">Les organisations</string>
<string name="navAbout">Sur</string>
<string name="navRate">Rate GitNex</string>
<string name="navLogout">Connectez - Out</string>
<string name="navSettings">Configuration</string>
<string name="navOrgs">Organisations</string>
<string name="navAbout">À propos</string>
<string name="navRate">Noter GitNex</string>
<string name="navLogout">Déconnexion</string>
<string name="navExplore">Explorer</string>
<!-- menu items -->
<!-- page titles -->
<string name="pageTitleAbout">Sur</string>
<string name="pageTitleAbout">À propos</string>
<string name="pageTitleHome">Accueil</string>
<string name="pageTitleMyRepos">My Repositories</string>
<string name="pageTitleMyRepos">Mes dépôts</string>
<string name="pageTitleRepositories">Dépôts</string>
<string name="pageTitleProfile">Profil</string>
<string name="pageTitleNewRepo">Créer un référentiel</string>
<string name="pageTitleOrganizations">Les organisations</string>
<string name="pageTitleIssues">Issues</string>
<string name="pageTitleSettings">Settings</string>
<string name="pageTitleCreateOrganization">Créer une organisation</string>
<string name="pageTitleCreateMilestone">Create Milestone</string>
<string name="pageTitleCreateNewIssue">Create Issue</string>
<string name="pageTitleCreateLabel">Create Label</string>
<string name="pageTitleCredits">Credits</string>
<string name="pageTitleLabelUpdate">Update Label</string>
<string name="pageTitleSponsors">Sponsors</string>
<string name="pageTitleStarredRepos">Starred Repositories</string>
<string name="pageTitleCreateTeam">Create Team</string>
<string name="pageTitleAddEmail">Add Email Address</string>
<string name="pageTitleNewFile">New File</string>
<string name="pageTitleNewRepo">Nouveau dépôt</string>
<string name="pageTitleOrganizations">Organisations</string>
<string name="pageTitleIssues">Tickets</string>
<string name="pageTitleSettings">Configuration</string>
<string name="pageTitleCreateOrganization">Nouvelle organisation</string>
<string name="pageTitleCreateMilestone">Nouveau jalon</string>
<string name="pageTitleCreateNewIssue">Nouveau ticket</string>
<string name="pageTitleCreateLabel">Nouvelle étiquette</string>
<string name="pageTitleCredits">Crédits</string>
<string name="pageTitleLabelUpdate">Modifier létiquette</string>
<string name="pageTitleSponsors">Partenaires</string>
<string name="pageTitleStarredRepos">Dépôts favoris</string>
<string name="pageTitleCreateTeam">Nouvelle équipe</string>
<string name="pageTitleAddEmail">Ajouter une adresse e-mail</string>
<string name="pageTitleNewFile">Nouveau fichier</string>
<string name="pageTitleExplore">Explorer</string>
<!-- page titles -->
<string name="appVersion">Version\u0020:\u0020</string>
<string name="appBuild">Construire No.\u0020:\u0020</string>
<string name="repoName">Démo repo</string>
<string name="repoFullname">Repo with ORG</string>
<string name="repoDescription">Demo la description</string>
<string name="noData">Aucun référentiel trouvé!</string>
<string name="appBuild">Build No.\u0020:\u0020</string>
<string name="repoName">Dépôt de démonstration</string>
<string name="repoFullname">Nom complet du dépôt</string>
<string name="repoDescription">Description de démonstration</string>
<string name="noData">Aucun dépôt</string>
<string name="orgName">Organisation de démonstration</string>
<string name="orgDescription">Demo description</string>
<string name="noDataOrg">Aucune organisation trouvée!</string>
<string name="orgDescription">Description de démonstration</string>
<string name="noDataOrg">Aucune organisation</string>
<string name="newCreateButtonCopy">Créer</string>
<string name="newUpdateButtonCopy">Update</string>
<string name="newRepoTintCopy">Nom du référentiel</string>
<string name="newRepoDescTintCopy">Description du référentiel</string>
<string name="newRepoPrivateCopy">Private</string>
<string name="newUpdateButtonCopy">Modifier</string>
<string name="newRepoTintCopy">Nom du dépôt</string>
<string name="newRepoDescTintCopy">Description du dépôt</string>
<string name="newRepoPrivateCopy">Privé</string>
<string name="newRepoDescInfo">255 caractères maximum</string>
<string name="newRepoOwner">Propriétaire</string>
<string name="newOrgTintCopy">nom de l\'organisation</string>
<string name="newOrgDescTintCopy">Description de l\'organisation</string>
<string name="newOrgTintCopy">Nom de lorganisation</string>
<string name="newOrgDescTintCopy">Description</string>
<string name="newOrgDescInfo">255 caractères maximum</string>
<string name="userName">NOM D\'UTILISATEUR</string>
<string name="passWord">MOT DE PASSE</string>
<string name="btnLogin">S\'IDENTIFIER</string>
<string name="instanceUrl">GITEA URL</string>
<string name="navigation_drawer_open">Ouvrir Navigation Drawer</string>
<string name="navigation_drawer_close">Fermer Navigation Drawer</string>
<string name="userName">Nom dutilisateur</string>
<string name="passWord">Mot de passe</string>
<string name="btnLogin">CONNEXION</string>
<string name="instanceUrl">URL de linstance</string>
<string name="navigation_drawer_open">Ouvrir le volet de navigation</string>
<string name="navigation_drawer_close">Fermer le volet de navigation</string>
<string name="logo">Se connecter à Gitea</string>
<string name="urlInfoTooltip">1- Choose the correct protocol(https or http) \n2- Enter Gitea url e.g: try.gitea.io \n3- For 2FA enter USERNAME:CODE in the Username field \n4- For HTTP basic auth use USERNAME@DOMAIN.COM in the URL field</string>
<string name="loginFailed">Wrong username/password</string>
<string name="protocolDelimiter">://</string>
<string name="protocolError">It is not recommended to use HTTP protocol unless you are testing on local network.</string>
<string name="malformedJson">Malformed JSON was received. Server response was not successful.</string>
<string name="emptyFieldURL">Instance URL is required</string>
<string name="emptyFieldUsername">Username is required</string>
<string name="emptyFieldPassword">Password is required</string>
<string name="checkNetConnection">Impossible d\'accéder au réseau, veuillez vérifier votre connexion Internet</string>
<string name="emptyFields">Tous les champs sont requis</string>
<string name="repoNameErrorEmpty">Le nom du référentiel est vide</string>
<string name="repoNameErrorInvalid">Le nom du référentiel n\'est pas valide. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="repoDescError">La description du référentiel dépasse la limite maximale de 255 caractères</string>
<string name="repoCreated">Référentiel créé avec succès!</string>
<string name="repoCreatedError">Une erreur s\'est produite. Veuillez réessayer</string>
<string name="repoExistsError">Repository of this name already exists under selected Owner</string>
<string name="orgNameErrorEmpty">Le nom de l\'organisation est vide</string>
<string name="orgNameErrorInvalid">Le nom de l\'organisation n\'est pas valide, [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="orgDescError">La description de l\'organisation dépasse la limite maximale de 255 caractères</string>
<string name="orgCreated">organisation créée avec succès!</string>
<string name="orgCreatedError">Une erreur s\'est produite. Veuillez réessayer</string>
<string name="orgExistsError">Organization already exists</string>
<string name="processingText">En traitement</string>
<string name="search">Search</string>
<string name="wip">Work in progress</string>
<string name="urlInfoTooltip">1. Choisissez le protocole adéquat (HTTPS ou HTTP)\n2. Entrez lURL de votre instance Gitea (ex : try.gitea.io)\n3. Si lauthentification à deux facteurs est activée pour votre compte, saisissez le code OTP\n4. Pour une authentification basique avec HTTP, utilisez NOMDUTILISATEUR@DOMAINE.COM dans le champ URL GITEA</string>
<string name="loginFailed">Mauvais nom dutilisateur/mot de passe</string>
<string name="protocolError">Il nest recommandé dutiliser le protocole HTTP que pour des tests en réseau local.</string>
<string name="malformedJson">JSON mal formé. Le serveur ne répond pas.</string>
<string name="emptyFieldURL">URL de linstance requise</string>
<string name="emptyFieldUsername">Nom dutilisateur requis</string>
<string name="emptyFieldPassword">Mot de passe requis</string>
<string name="checkNetConnection">Impossible daccéder au réseau, veuillez vérifier votre connexion Internet</string>
<string name="repoNameErrorEmpty">Nom du dépôt requis</string>
<string name="repoNameErrorInvalid">Nom de dépôt invalide [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="repoDescError">La description du dépôt dépasse la limite de 255 caractères</string>
<string name="repoCreated">Dépôt créé</string>
<string name="repoCreatedError">Une erreur sest produite, veuillez réessayer</string>
<string name="repoExistsError">Le propriétaire désigné possède déjà un dépôt du même nom</string>
<string name="orgNameErrorEmpty">Nom de lorganisation requis</string>
<string name="orgNameErrorInvalid">Nom de lorganisation invalide [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="orgDescError">La description dépasse la limite de 255 caractères</string>
<string name="orgCreated">Organisation créée</string>
<string name="orgCreatedError">Une erreur sest produite, veuillez réessayer</string>
<string name="orgExistsError">Ce nom dorganisation est déjà pris</string>
<string name="processingText">Traitement en cours</string>
<string name="search">Rechercher</string>
<string name="wip">En développement</string>
<string name="close">Fermer</string>
<string name="addNewContent">Add</string>
<string name="addNewContent">Ajouter</string>
<string name="orgContentAvatar">Org</string>
<string name="repoContentAvatar">Repo</string>
<string name="repoContentAvatar">Dépôt</string>
<string name="privateAvatar">Pri</string>
<string name="repoStars">0</string>
<string name="repoWatchers">0</string>
<string name="repoIssues">54321</string>
<string name="removeContent">Remove</string>
<string name="genericApiStatusError">L\'instance a renvoyé une erreur. Code\u0020</string>
<string name="title_activity_repo_detail">RepoDetailActivity</string>
<string name="removeContent">Supprimer</string>
<string name="genericApiStatusError">Linstance a renvoyé une erreur. Code\u0020</string>
<string name="title_activity_repo_detail">Activité du dépôt</string>
<string name="tab_text_info">Détails</string>
<string name="tab_text_issues">Open Issues</string>
<string name="tabItemCloseIssues">Closed Issues</string>
<string name="tab_text_ml">Milestones</string>
<string name="tab_text_releases">Releases</string>
<string name="tab_text_files">Fichiers</string>
<string name="tab_text_issues">Tickets ouverts</string>
<string name="tabItemCloseIssues">Tickets fermés</string>
<string name="tab_text_ml">Jalons</string>
<string name="tab_text_releases">Versions</string>
<string name="tab_text_branches">Branches</string>
<string name="tab_text_labels">Labels</string>
<string name="action_settings">Settings</string>
<string name="tab_text_collaborators">Collaborators</string>
<string name="noDataIssueTab">No Issues found!</string>
<string name="infoTabRepoName1">Repository</string>
<string name="infoTabRepoOwner1">Owner</string>
<string name="tab_text_labels">Étiquettes</string>
<string name="action_settings">Configuration</string>
<string name="tab_text_collaborators">Collaborateurs</string>
<string name="noDataIssueTab">Aucun ticket</string>
<string name="infoTabRepoName1">Dépôt</string>
<string name="infoTabRepoOwner1">Propriétaire</string>
<string name="infoTabRepoDesc">Description</string>
<string name="infoTabRepoWebsite">Website</string>
<string name="infoTabRepoSize">Size</string>
<string name="infoTabRepoDefaultBranch">Default Branch</string>
<string name="infoTabRepoSshUrl">SSH URL</string>
<string name="infoTabRepoCloneUrl">Clone URL</string>
<string name="infoTabRepoRepoUrl">Repo URL</string>
<string name="infoTabRepoForksCount">Forks Count</string>
<string name="infoTabRepoCreatedAt">Created</string>
<string name="infoTabRepoUpdatedAt">Last Updated</string>
<string name="infoTabRepoDummyTime">2018&#8211;10&#8211;30 08:25:25</string>
<string name="infoTabRepoBlank">&#8230;</string>
<string name="infoTabRepoZero">0</string>
<string name="infoTabRepoDefaultBranchText">master</string>
<string name="infoTabRepoWebsite">Site Web</string>
<string name="infoTabRepoSize">Taille</string>
<string name="infoTabRepoDefaultBranch">Branche par défaut</string>
<string name="infoTabRepoSshUrl">URL SSH</string>
<string name="infoTabRepoCloneUrl">URL de clonage</string>
<string name="infoTabRepoRepoUrl">URL du dépôt</string>
<string name="infoTabRepoForksCount">Bifurcations</string>
<string name="infoTabRepoCreatedAt">Créé</string>
<string name="infoTabRepoUpdatedAt">Dernière modification</string>
<string name="timeAtText">à</string>
<string name="hash">#</string>
<string name="createdText">Created\u0020</string>
<string name="dueDateText">Due Date</string>
<string name="issueStatusTextOpen">Status : open</string>
<string name="issueStatusOpen">open</string>
<string name="issueStatusTextClosed">Status : closed</string>
<string name="issueStatusClosed">closed</string>
<string name="issueCreator">Creator :\u0020</string>
<string name="issueAssigneesText">Assignees</string>
<string name="issueTypeIssue">Type : Issue</string>
<string name="issueTypePullRequest">Type : Pull Request</string>
<string name="issueCommenter">Commenter :\u0020</string>
<string name="issueTitleWithId">#%1$d %2$s</string>
<string name="issueMilestone">Milestone %1$s</string>
<string name="dueDate">Due %1$s</string>
<string name="createdTime">Created %1$s</string>
<string name="assignedTo">Assigned to : %1$s</string>
<string name="commentButtonText">Comment</string>
<string name="commentEmptyError">Please write your comment!</string>
<string name="commentSuccess">Comment posted</string>
<string name="commentError">Something went wrong, please try again</string>
<string name="generalImgContentText">IMG</string>
<string name="generalPageTitle">GitNex</string>
<string name="noDataMilestonesTab">No Milestone found!</string>
<string name="commitAuthor">Commit author : %1$s</string>
<string name="commitHash">Commit hash \n%1$s%2$s</string>
<string name="releaseTitle">Release Title</string>
<string name="releaseDescription">Release Description</string>
<string name="releaseDownloadText">Downloads</string>
<string name="releaseType">Release Type</string>
<string name="releaseZip">Release Zip</string>
<string name="releaseTar">Release Tar</string>
<string name="noDataReleasesTab">No Releases found!</string>
<string name="releaseTag">Tag: %1$s</string>
<string name="collaboratorsNameToast">Collaborator : %1$s</string>
<string name="noDataCollaboratorTab">No Collaborator found!</string>
<string name="editText">Edit</string>
<string name="newMilestoneTitle">Title</string>
<string name="createdText">Ouvert\u0020</string>
<string name="dueDateText">Échéance</string>
<string name="issueStatusTextOpen">Statut : ouvert</string>
<string name="issueStatusOpen">ouvert</string>
<string name="issueStatusTextClosed">Statut : fermé</string>
<string name="issueStatusClosed">fermé</string>
<string name="issueCreator">Créateur :\u0020</string>
<string name="issueAssigneesText">Assignés</string>
<string name="issueTypeIssue">Type : problème</string>
<string name="issueTypePullRequest">Type : demande dajout</string>
<string name="issueCommenter">Commentateur :\u0020</string>
<string name="issueMilestone">Jalon %1$s</string>
<string name="dueDate">Échéance %1$s</string>
<string name="createdTime">Ouvert %1$s</string>
<string name="assignedTo">Assigné à : %1$s</string>
<string name="commentButtonText">Publier</string>
<string name="commentEmptyError">Veuillez saisir votre commentaire</string>
<string name="commentSuccess">Commentaire publié</string>
<string name="commentError">Une erreur sest produite, veuillez réessayer</string>
<string name="generalImgContentText">Avatar</string>
<string name="noDataMilestonesTab">Aucun jalon</string>
<string name="commitAuthor">Auteur de la révision : %1$s</string>
<string name="commitHash">Hash de la révision \n%1$s%2$s</string>
<string name="releaseTitle">Titre de la version</string>
<string name="releaseDescription">Description de la version</string>
<string name="releaseDownloadText">Télécharger</string>
<string name="releaseType">Format</string>
<string name="releaseZip">Version zip</string>
<string name="releaseTar">Version tar</string>
<string name="noDataReleasesTab">Aucune version</string>
<string name="releaseTag">Tag : %1$s</string>
<string name="collaboratorsNameToast">Collaborateur : %1$s</string>
<string name="noDataCollaboratorTab">Aucun collaborateur</string>
<string name="editText">Modifier</string>
<string name="newMilestoneTitle">Titre</string>
<string name="newMilestoneDescription">Description</string>
<string name="newMilestoneDueDate">Due Date</string>
<string name="setDueDate">%1$d-%2$d-%3$d</string>
<string name="milestoneNameErrorEmpty">Milestone title is empty</string>
<string name="milestoneNameErrorInvalid">Milestone title is not valid. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="milestoneDescError">Milestone description exceeds the max 255 characters limit</string>
<string name="milestoneCreated">Milestone created successfully!</string>
<string name="milestoneCreatedError">Something went wrong, please try again</string>
<string name="milestoneDateEmpty">Please choose due date!</string>
<string name="milestoneOpenIssues">Open issues : %1$d</string>
<string name="milestoneClosedIssues">Closed issues : %1$d</string>
<string name="newIssueSelectAssigneesListTitle">Select Assignees</string>
<string name="newIssueSelectLabelsListTitle">Select Labels</string>
<string name="newIssueDialogDone">Done</string>
<string name="newIssueDialogCancel">Cancel</string>
<string name="newIssueTitle">Title</string>
<string name="newIssueAssigneesListTitle">Assignees</string>
<string name="newMilestoneDueDate">Échéance</string>
<string name="milestoneNameErrorEmpty">Titre du jalon requis</string>
<string name="milestoneNameErrorInvalid">Titre du jalon invalide [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="milestoneDescError">La description du jalon dépasse la limite de 255 caractères</string>
<string name="milestoneCreated">Jalon créé</string>
<string name="milestoneCreatedError">Une erreur sest produite, veuillez réessayer</string>
<string name="milestoneDateEmpty">Veuillez choisir une échéance</string>
<string name="milestoneOpenIssues">Tickets ouverts : %1$d</string>
<string name="milestoneClosedIssues">Tickets fermés : %1$d</string>
<string name="newIssueSelectAssigneesListTitle">Assignés</string>
<string name="newIssueSelectLabelsListTitle">Sélectionner des étiquettes</string>
<string name="newIssueDialogDone">Terminé</string>
<string name="newIssueDialogCancel">Annuler</string>
<string name="newIssueTitle">Titre</string>
<string name="newIssueAssigneesListTitle">Assignés</string>
<string name="newIssueDescriptionTitle">Description</string>
<string name="newIssueDueDateTitle">Due Date</string>
<string name="newIssueMilestoneTitle">Milestone</string>
<string name="newIssueLabelsTitle">Labels</string>
<string name="spinnerMilestoneText">%1$s [%2$s]</string>
<string name="dialogAssignessText">%1$s - @%2$s</string>
<string name="issueTitleEmpty">Issue title is empty!</string>
<string name="issueDescriptionEmpty">Issue description is empty!</string>
<string name="issueCreated">New issue created successfully!</string>
<string name="issueCreatedError">Something went wrong, please try again</string>
<string name="noAssigneesFound">No collaborators found!</string>
<string name="noLabelsFound">No labels found!</string>
<string name="newIssueDueDateTitle">Échéance</string>
<string name="newIssueMilestoneTitle">Jalon</string>
<string name="newIssueLabelsTitle">Étiquettes</string>
<string name="issueTitleEmpty">Titre du ticket requis</string>
<string name="issueDescriptionEmpty">Description du ticket requise</string>
<string name="issueCreated">Nouveau ticket créé</string>
<string name="issueCreatedError">Une erreur sest produite, veuillez réessayer</string>
<string name="noAssigneesFound">Aucun collaborateur</string>
<string name="noLabelsFound">Aucune étiquette</string>
<!-- settings -->
<string name="settingsLanguageHeaderText">Les langues</string>
<string name="settingsDateTimeHeaderText">Date &amp; Time</string>
<string name="settingsSave">Settings saved!</string>
<string name="settingsLanguageSelectorHeader">Language</string>
<string name="settingsLanguageSelectedHeaderDefault">English</string>
<string name="settingsAppearanceHeader">Appearance</string>
<string name="settingsDateTimeHeaderDefault">Pretty</string>
<string name="settingsLanguageSelectorDialogTitle">Choose Language</string>
<string name="settingsTimeSelectorDialogTitle">Choose Time Format</string>
<string name="settingsIssueBadgeHeaderText">Issues Badge</string>
<string name="settingsHelpTranslateText">Help us translate GitNex to your language</string>
<string name="codeBlockHeaderText">Code Block Color</string>
<string name="settingsCodeBlockSelectorDialogTitle">Code Block Color Selector</string>
<string name="settingsHomeScreenHeaderText">Home Screen</string>
<string name="settingsHomeScreenSelectedText">My Repositories</string>
<string name="settingshomeScreenSelectorDialogTitle">Select Home Screen</string>
<string name="settingsLanguageHeaderText">Traduction</string>
<string name="settingsDateTimeHeaderText">Date et heure</string>
<string name="settingsSave">Configuration enregistrée</string>
<string name="settingsLanguageSelectorHeader">Langue</string>
<string name="settingsLanguageSelectedHeaderDefault">Français</string>
<string name="settingsAppearanceHeader">Apparence</string>
<string name="settingsDateTimeHeaderDefault">Relatif</string>
<string name="settingsLanguageSelectorDialogTitle">Langue</string>
<string name="settingsTimeSelectorDialogTitle">Format de date</string>
<string name="settingsIssueBadgeHeaderText">Compteur de tickets ouverts</string>
<string name="settingsHelpTranslateText">Aidez-nous à traduire GitNex dans votre langue</string>
<string name="codeBlockHeaderText">Couleur du code</string>
<string name="settingsCodeBlockSelectorDialogTitle">Couleur du code</string>
<string name="settingsHomeScreenHeaderText">Écran daccueil</string>
<string name="settingsHomeScreenSelectedText">Mes dépôts</string>
<string name="settingshomeScreenSelectorDialogTitle">Écran daccueil</string>
<!-- settings -->
<string name="noMoreData">No more data available!</string>
<string name="createLabel">Create Label</string>
<string name="menuTitleText">Repo Menu</string>
<string name="labelName">Label Name</string>
<string name="labelColor">Label Color</string>
<string name="labelEmptyError">Label name is empty!</string>
<string name="labelNameError">Label name is not valid!</string>
<string name="labelCreated">Label created!</string>
<string name="labelGeneralError">Something went wrong, please try again</string>
<string name="labelUpdated">Label updated!</string>
<string name="noDataLabelsTab">No Labels found!</string>
<string name="noMoreData">Aucune donnée</string>
<string name="createLabel">Nouvelle étiquette</string>
<string name="menuTitleText">Menu du dépôt</string>
<string name="labelName">Nom de létiquette</string>
<string name="labelColor">Couleur</string>
<string name="labelEmptyError">Nom de létiquette requis</string>
<string name="labelNameError">Nom de létiquette invalide</string>
<string name="labelCreated">Étiquette créée</string>
<string name="labelGeneralError">Une erreur sest produite, veuillez réessayer</string>
<string name="labelUpdated">Étiquette modifiée</string>
<string name="noDataLabelsTab">Aucune étiquette</string>
<string name="labelMenuContentDesc">Desc</string>
<string name="labelMenuEdit">Edit</string>
<string name="labelMenuDelete">Delete</string>
<string name="labelDeleteText">Label deleted!</string>
<string name="labelDeleteErrorText">Something went wrong, please try again!</string>
<string name="noDataBranchesTab">No Branch found!</string>
<string name="creditsLogoDesign">Design</string>
<string name="alertDialogTokenRevokedTitle">Authorization Error</string>
<string name="alertDialogTokenRevokedMessage">It seems that the Access Token is revoked OR your are not allowed to see these contents. In case of revoked Token, please logout and login again.</string>
<string name="alertDialogTokenRevokedCopyNegativeButton">Cancel</string>
<string name="alertDialogTokenRevokedCopyPositiveButton">Logout</string>
<string name="labelDeleteTitle">Delete\u0020</string>
<string name="labelDeleteMessage">Do you really want to delete this label?</string>
<string name="labelDeletePositiveButton">Ok</string>
<string name="labelDeleteNegativeButton">Cancel</string>
<string name="labelMenuEdit">Modifier</string>
<string name="labelMenuDelete">Supprimer</string>
<string name="labelDeleteText">Étiquette supprimée</string>
<string name="labelDeleteErrorText">Une erreur sest produite, veuillez réessayer</string>
<string name="noDataBranchesTab">Aucune branche</string>
<string name="creditsLogoDesign">Graphisme</string>
<!-- credits - this part does not need translation -->
<!-- credits - this part does not need translation -->
<string name="alertDialogTokenRevokedTitle">Erreur dautorisation</string>
<string name="alertDialogTokenRevokedMessage">Vous navez pas lautorisation de voir ce contenu OU votre jeton daccès a été révoqué. Dans ce dernier cas, veuillez vous reconnecter.</string>
<string name="alertDialogTokenRevokedCopyNegativeButton">Annuler</string>
<string name="alertDialogTokenRevokedCopyPositiveButton">Déconnexion</string>
<string name="labelDeleteTitle">Supprimer\u0020</string>
<string name="labelDeleteMessage">Voulez-vous vraiment supprimer cette étiquette ?</string>
<string name="labelDeletePositiveButton">Confirmer</string>
<string name="labelDeleteNegativeButton">Annuler</string>
<!-- org tabbed layout str -->
<string name="title_activity_org_detail">OrgDetailActivity</string>
<string name="orgTabRepos">Repositories</string>
<string name="orgTabTeams">Teams</string>
<string name="orgTabMembers">Members</string>
<string name="orgCreateTeam">Create Team</string>
<string name="noDataTeams">No teams found!</string>
<string name="teamTitle">Team name</string>
<string name="teamDescription">Team desc</string>
<string name="title_activity_org_detail">Activité de lorganisation</string>
<string name="orgTabRepos">Dépôts</string>
<string name="orgTabTeams">Équipes</string>
<string name="orgTabMembers">Membres</string>
<string name="orgCreateTeam">Nouvelle équipe</string>
<string name="noDataTeams">Aucune équipe</string>
<string name="teamTitle">Nom de léquipe</string>
<string name="teamDescription">Description de léquipe</string>
<string name="teamPermission">Permission : %1$s</string>
<string name="noDataMembers">No members found!</string>
<string name="orgMember">Org members</string>
<string name="orgTeamMembers">Organization team members</string>
<string name="noDataMembers">Aucun membre</string>
<string name="orgMember">Membres de lorganisation</string>
<string name="orgTeamMembers">Membres de léquipe</string>
<!-- org tabbed layout str -->
<!-- create team -->
<string name="newTeamTitle">Team Name</string>
<string name="newTeamTitle">Nom de léquipe</string>
<string name="newTeamDesc">Description</string>
<string name="newTeamPermission">Permission</string>
<string name="newTeamAccessControls">Access Controls</string>
<string name="newTeamPermissionRead">Members can view and clone team repositories</string>
<string name="newTeamPermissionWrite">Members can read and push to team repositories</string>
<string name="newTeamPermissionAdmin">Members can pull and push to team repositories and add collaborators to them</string>
<string name="teamNameEmpty">Please enter team name.</string>
<string name="teamNameError">Team name should contain only alphanumeric, dash (-), underscore (_) and dot (.) characters.</string>
<string name="teamPermissionEmpty">Please select permission.</string>
<string name="teamDescError">Team description have illegal characters.</string>
<string name="teamDescLimit">Team description have more than 100 characters.</string>
<string name="teamCreated">Team created successfully.</string>
<string name="teamCreatedError">Something went wrong, please try again.</string>
<string name="newTeamAccessControls">Accès</string>
<string name="newTeamPermissionRead">Les membres peuvent voir et cloner les dépôts de léquipe.</string>
<string name="newTeamPermissionWrite">Les membres peuvent lire et pousser dans les dépôts de léquipe.</string>
<string name="newTeamPermissionAdmin">Les membres peuvent tirer et pousser dans les dépôts de léquipe ainsi quajouter des collaborateurs.</string>
<string name="teamNameEmpty">Nom déquipe requis</string>
<string name="teamNameError">Le nom déquipe peut contenir des caractères alphanumériques, des tirets (-), des soulignés (_) et des points (.).</string>
<string name="teamPermissionEmpty">Veuillez sélectionner une permission</string>
<string name="teamDescError">La description contient des caractères interdits</string>
<string name="teamDescLimit">La description de léquipe dépasse la limite de 100 caractères</string>
<string name="teamCreated">Équipe créée</string>
<string name="teamCreatedError">Une erreur sest produite, veuillez réessayer</string>
<!-- create team -->
<!-- edit comment -->
<string name="editCommentTitle">Edit Comment</string>
<string name="editCommentButtonText">Edit</string>
<string name="editCommentUpdatedText">Comment updated</string>
<string name="editCommentTitle">Modifier le commentaire</string>
<string name="editCommentButtonText">Modifier</string>
<string name="editCommentUpdatedText">Commentaire modifié</string>
<!-- edit comment -->
<!-- add collaborator -->
<string name="addCollaboratorTitle">Add Collaborator</string>
<string name="addCollaboratorSearchHint">Search users</string>
<string name="addCollaboratorViewUserDesc">Username</string>
<string name="removeCollaboratorTitle">Remove\u0020</string>
<string name="removeCollaboratorMessage">Do you want to remove this user from the repository?</string>
<string name="removeCollaboratorToastText">User removed from the repository.</string>
<string name="addCollaboratorToastText">User added to the repository.</string>
<string name="addCollaboratorTitle">Ajouter/supprimer des collaborateurs</string>
<string name="addCollaboratorSearchHint">Rechercher des utilisateurs</string>
<string name="addCollaboratorViewUserDesc">Nom dutilisateur</string>
<string name="removeCollaboratorTitle">Supprimer\u0020</string>
<string name="removeCollaboratorMessage">Supprimer cet utilisateur du dépôt ?</string>
<string name="removeCollaboratorToastText">Utilisateur supprimé du dépôt</string>
<string name="addCollaboratorToastText">Utilisateur ajouté au dépôt</string>
<!-- add collaborator -->
<!-- profile section -->
<string name="profileTabFollowers">Followers</string>
<string name="profileTabFollowing">Following</string>
<string name="profileCreateNewEmailAddress">Add Email Address</string>
<string name="profileEmailButton">Save</string>
<string name="profileEmailTitle">Email Address</string>
<string name="emailAddedText">New email added successfully.</string>
<string name="emailErrorEmpty">Email address is empty.</string>
<string name="emailErrorInvalid">Email address is not valid.</string>
<string name="emailErrorInUse">Email address is already in use.</string>
<string name="emailTypeText">Primary</string>
<string name="profileTabEmails">Emails</string>
<string name="profileTabFollowers">Abonnés</string>
<string name="profileTabFollowing">Abonnements</string>
<string name="profileCreateNewEmailAddress">Ajouter une adresse e-mail</string>
<string name="profileEmailButton">Sauvegarder</string>
<string name="profileEmailTitle">Adresse e-mail</string>
<string name="emailAddedText">Nouvelle adresse e-mail ajoutée</string>
<string name="emailErrorEmpty">Aucune adresse e-mail saisie</string>
<string name="emailErrorInvalid">Adresse e-mail invalide</string>
<string name="emailErrorInUse">Adresse e-mail déjà utilisée</string>
<string name="emailTypeText">Principale</string>
<string name="profileTabEmails">E-mails</string>
<!-- profile section -->
<!-- single issue section -->
<string name="singleIssueEditLabels">Add / Remove Labels</string>
<string name="labelsUpdated">Labels updated</string>
<string name="closeIssue">Close Issue</string>
<string name="replyToIssue">Add Comment</string>
<string name="editIssue">Edit Issue</string>
<string name="reOpenIssue">Reopen Issue</string>
<string name="issueStateClosed">Issue Closed</string>
<string name="issueStateReopened">Issue Reopened</string>
<string name="addRemoveAssignees2">Add Assignees</string>
<string name="addRemoveAssignees">Add / Remove Assignees</string>
<string name="assigneesUpdated">Assignees updated</string>
<string name="singleIssueEditLabels">Ajouter/supprimer des étiquettes</string>
<string name="labelsUpdated">Étiquettes mises à jour</string>
<string name="closeIssue">Fermer le ticket</string>
<string name="replyToIssue">Ajouter un commentaire</string>
<string name="editIssue">Modifier le ticket</string>
<string name="reOpenIssue">Réouvrir le ticket</string>
<string name="issueStateClosed">Ticket fermé</string>
<string name="issueStateReopened">Ticket réouvert</string>
<string name="addRemoveAssignees2">Ajouter des assignés</string>
<string name="addRemoveAssignees">Ajouter/supprimer des assignés</string>
<string name="assigneesUpdated">Assignés mis à jour</string>
<!-- single issue section -->
<!-- multi select dialog -->
<string name="select_entry">Select Entries</string>
<string name="validation_text">Please select at least one option</string>
<string name="please_select_atleast">Please select at least </string>
<string name="you_can_only_select_upto">You can only select up to </string>
<string name="select_entry">Sélection des entrées</string>
<string name="validation_text">Veuillez sélectionner au moins une option</string>
<string name="please_select_atleast">Veuillez sélectionner au moins </string>
<string name="you_can_only_select_upto">Vous ne pouvez sélectionner que </string>
<string name="option"> option</string>
<string name="options"> options</string>
<string name="select_all">Select all</string>
<string name="de_select_all">Deselect all</string>
<string name="select_all">Tout sélectionner</string>
<string name="de_select_all">Tout désélectionner</string>
<!-- multi select dialog -->
<string name="repoMetaData">Repository Meta</string>
<string name="repoMetaData">Informations sur le dépôt</string>
<!-- admin -->
<string name="adminCreateNewUser">Create New User</string>
<string name="adminUsers">Users</string>
<string name="adminCreateNewUser">Ajouter un nouvel utilisateur</string>
<string name="adminUsers">Utilisateurs</string>
<string name="userRoleAdmin">Admin</string>
<!-- admin -->
<!-- create user -->
<string name="userFullNameText">Full Name</string>
<string name="userEmail">Email</string>
<string name="userUserName">Username</string>
<string name="userPassword">Password</string>
<string name="userInvalidFullName">Invalid Full Name</string>
<string name="userInvalidUserName">Invalid Username</string>
<string name="userInvalidEmail">Invalid Email</string>
<string name="userCreatedText">New user created successfully</string>
<string name="userExistsError">User already exists</string>
<string name="userFullNameText">Nom complet</string>
<string name="userEmail">Adresse e-mail</string>
<string name="userUserName">Nom dutilisateur</string>
<string name="userPassword">Mot de passe</string>
<string name="userInvalidFullName">Nom complet invalide</string>
<string name="userInvalidUserName">Nom dutilisateur invalide</string>
<string name="userInvalidEmail">Adresse e-mail invalide</string>
<string name="userCreatedText">Nouvel utilisateur créé</string>
<string name="userExistsError">Nom dutilisateur déjà existant</string>
<!-- create user -->
<!-- sponsors -->
<!-- sponsors -->
<!-- edit issue -->
<string name="editIssueNavHeader">Edit Issue #%1$s</string>
<string name="editIssueSuccessMessage">Issue updated.</string>
<string name="editIssueNavHeader">Modifier le ticket %1$s</string>
<string name="editIssueSuccessMessage">Ticket modifié</string>
<!-- edit issue -->
<!-- release -->
<string name="createRelease">Create Release</string>
<string name="releaseTagNameText">Tag Name</string>
<string name="releaseTitleText">Title</string>
<string name="releaseContentText">Content</string>
<string name="releaseTypeText">Mark as Pre-Release</string>
<string name="releaseBranchText">Select Branch</string>
<string name="releaseDraftText">Draft</string>
<string name="tagNameErrorEmpty">Tag name is empty</string>
<string name="titleErrorEmpty">Title is empty</string>
<string name="releaseCreatedText">New release created</string>
<string name="createRelease">Nouvelle version</string>
<string name="releaseTagNameText">Nom du tag</string>
<string name="releaseTitleText">Titre</string>
<string name="releaseContentText">Contenu</string>
<string name="releaseTypeText">Marquer comme préversion</string>
<string name="releaseBranchText">Branche</string>
<string name="releaseDraftText">Brouillon</string>
<string name="tagNameErrorEmpty">Nom du tag requis</string>
<string name="titleErrorEmpty">Titre requis</string>
<string name="releaseCreatedText">Nouvelle version créée</string>
<!-- release -->
<string name="loginOTPError">Enter OTP code</string>
<string name="loginOTPTypeError">OTP code should be numbers.</string>
<string name="loginOTP">OTP Code (Optional)</string>
<string name="otpMessage">Enter the otp code if 2FA is enabled</string>
<string name="repoStargazersInMenu">Stargazers</string>
<string name="repoWatchersInMenu">Watchers</string>
<string name="noDataStargazers">No stars found</string>
<string name="noDataWatchers">No watchers found</string>
<string name="starMember">Star</string>
<string name="watcherMember">Watcher</string>
<string name="commitLinkBranchesTab">Commit</string>
<string name="zipArchiveDownloadReleasesTab">Zip Archive</string>
<string name="tarArchiveDownloadReleasesTab">Tar Archive</string>
<string name="loginOTPError">Code OTP requis</string>
<string name="loginOTPTypeError">Le code OTP est composé de chiffres</string>
<string name="loginOTP">Code OTP (si nécessaire)</string>
<string name="otpMessage">Entrez le code OTP si lauthentification à deux facteurs est activée</string>
<string name="openWebRepo">Ouvrir dans le navigateur</string>
<string name="repoStargazersInMenu">Fans</string>
<string name="repoWatchersInMenu">Observateurs</string>
<string name="noDataStargazers">Aucun fan</string>
<string name="noDataWatchers">Aucun observateur</string>
<string name="starMember">Ajouter aux favoris</string>
<string name="watcherMember">Observateur</string>
<string name="commitLinkBranchesTab">Dernière révision</string>
<string name="zipArchiveDownloadReleasesTab">Archive zip</string>
<string name="tarArchiveDownloadReleasesTab">Archive tar</string>
<!-- new file -->
<string name="newFileNameTintCopy">File Name</string>
<string name="newFileBranchTintCopy">Branch Name</string>
<string name="newFileContentTintCopy">File Content</string>
<string name="newFileButtonCopy">Create New File</string>
<string name="newFileNameHintMessage">with folder: app/test.md</string>
<string name="newFileMessageTintCopy">Commit Message</string>
<string name="newFileInvalidBranchName">Invalid branch name, may only contain &#8211;, a&#8211;z, 0&#8211;9</string>
<string name="newFileCommitMessageError">Commit message is too long</string>
<string name="newFileSuccessMessage">New file created</string>
<string name="newFileOldBranches">Current Branches</string>
<string name="newFileRequiredFields">Fields like filename, contents and commit message are required.</string>
<string name="newFileCurrentBranchMessage">Selecting current branch will disable new branch</string>
<string name="newFileNewBranchMessage">e.g: new-branch</string>
<string name="newFileRequiredFieldNewBranchName">New branch name cannot be empty if current branch is not selected</string>
<string name="strFilter">Filter</string>
<string name="copyIssueUrl">Copier l Issue URL</string>
<string name="copyIssueUrlToastMsg">Issue URL copied to clipboard</string>
<string name="newFileNameTintCopy">Nom du fichier</string>
<string name="newFileBranchTintCopy">Nom de la nouvelle branche</string>
<string name="newFileContentTintCopy">Contenu du fichier</string>
<string name="newFileButtonCopy">Créer</string>
<string name="newFileNameHintMessage">avec le dossier : app/test.md</string>
<string name="newFileMessageTintCopy">Message de la révision</string>
<string name="newFileInvalidBranchName">Nom de branche invalide [&#8211;, un&#8211;z, 0&#8211;9]</string>
<string name="newFileCommitMessageError">Message de la révision trop long</string>
<string name="newFileSuccessMessage">Nouveau fichier créé</string>
<string name="newFileOldBranches">Branche</string>
<string name="newFileRequiredFields">Le nom de fichier, le contenu et le message de la révision sont requis</string>
<string name="newFileCurrentBranchMessage">Sélectionner une branche désactive les champs suivants</string>
<string name="newFileNewBranchMessage">ex : new-branch</string>
<string name="newFileRequiredFieldNewBranchName">Nom de la nouvelle branche requis si aucune branche nest sélectionnée</string>
<string name="strFilter">Filtrer</string>
<string name="copyIssueUrl">Copier lURL du ticket</string>
<string name="copyIssueUrlToastMsg">URL du ticket copiée dans le presse-papier</string>
<string name="milestoneCompletion">%1$d\uFF05 terminé</string>
<!-- files -->
<string name="noDataFilesTab">Aucun fichier</string>
<string name="filesDirNotSupportedYet">Lexplorateur de dossiers nest pas disponible pour linstant</string>
<string name="filesGenericError">Ce fichier ne peut être affiché, lAPI a retourné une erreur</string>
<string name="filesBreadcrumb">Racine</string>
<!-- generic copy -->
<string name="okButton">OK</string>
<string name="doneButton">Done</string>
<string name="cancelButton">Cancel</string>
<string name="genericError">Something went wrong, please try again</string>
<string name="apiNotFound">This request needs higher Gitea version than the one installed. Please upgrade your instance to the latest version of Gitea.</string>
<string name="noDataFound">No data found</string>
<string name="addButton">Add</string>
<string name="removeButton">Remove</string>
<string name="authorizeError">You are not authorized to perform this action.</string>
<string name="okButton">Confirmer</string>
<string name="doneButton">Terminé</string>
<string name="cancelButton">Annuler</string>
<string name="genericError">Une erreur sest produite, veuillez réessayer</string>
<string name="apiNotFound">Cette requête nécessite une version de Gitea plus récente. Veuillez mettre à jour votre instance.</string>
<string name="noDataFound">Aucune donnée</string>
<string name="addButton">Ajouter</string>
<string name="removeButton">Supprimer</string>
<string name="authorizeError">Vous nêtes pas autorisé à effectuer cette action</string>
<string name="menuContentDesc">Menu</string>
<string name="menuEditText">Edit</string>
<string name="menuDeleteText">Delete</string>
<string name="modifiedText">edited</string>
<string name="saveButton">Save</string>
<string name="nameText">Name</string>
<string name="menuEditText">Modifier</string>
<string name="menuDeleteText">Supprimer</string>
<string name="modifiedText">modifié</string>
<string name="saveButton">Sauvegarder</string>
<string name="nameText">Nom</string>
<string name="descriptionText">Description</string>
<string name="websiteText">Website</string>
<string name="locationText">Location</string>
<string name="openWebRepo">Ouvrir avec le Browser</string>
<string name="characters255Limit">Max 255 characters</string>
<string name="websiteText">Site Web</string>
<string name="locationText">Localisation</string>
<string name="characters255Limit">255 caractères maximum</string>
<string name="emptyFields">Tous les champs sont requis</string>
<!-- generic copy -->
<string name="translateText">Traduire GitNex avec Crowdin</string>
<string name="exploreTextBoxHint">Explorer les dépôts</string>
<string name="starRepository">Ajouter aux favoris</string>
<string name="unStarRepository">Retirer des favoris</string>
<string name="starRepositorySuccess">Dépôt ajouté aux favoris</string>
<string name="unStarRepositorySuccess">Dépôt retiré des favoris</string>
<string name="watchRepository">Suivre le dépôt</string>
<string name="unWatchRepository">Ne plus suivre le dépôt</string>
<string name="watchRepositorySuccess">Vous suivez ce dépôt</string>
<string name="unWatchRepositorySuccess">Vous ne suivez plus ce dépôt</string>
</resources>

View File

@ -0,0 +1,412 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources>
<!-- menu items -->
<string name="navMyRepos">I miei Repository</string>
<string name="navStarredRepos">Repository preferiti</string>
<string name="navRepos">Repositories</string>
<string name="navProfile">Profilo</string>
<string name="navSettings">Impostazioni</string>
<string name="navOrgs">Organizzazioni</string>
<string name="navAbout">Info su</string>
<string name="navRate">Valuta GitNex</string>
<string name="navLogout">Esci</string>
<string name="navExplore">Esplora</string>
<!-- menu items -->
<!-- page titles -->
<string name="pageTitleAbout">Info su</string>
<string name="pageTitleHome">Home</string>
<string name="pageTitleMyRepos">I miei Repository</string>
<string name="pageTitleRepositories">Repository</string>
<string name="pageTitleProfile">Profilo</string>
<string name="pageTitleNewRepo">Nuovo Repository</string>
<string name="pageTitleOrganizations">Organizzazioni</string>
<string name="pageTitleIssues">Problemi</string>
<string name="pageTitleSettings">Impostazioni</string>
<string name="pageTitleCreateOrganization">Nuova organizzazione</string>
<string name="pageTitleCreateMilestone">Nuova Milestone</string>
<string name="pageTitleCreateNewIssue">Nuovo Problema</string>
<string name="pageTitleCreateLabel">Nuova etichetta</string>
<string name="pageTitleCredits">Crediti</string>
<string name="pageTitleLabelUpdate">Aggiorna Etichetta</string>
<string name="pageTitleSponsors">Sponsor</string>
<string name="pageTitleStarredRepos">Repository preferiti</string>
<string name="pageTitleCreateTeam">Nuovo Team</string>
<string name="pageTitleAddEmail">Aggiungi indirizzo e-mail</string>
<string name="pageTitleNewFile">Nuovo File</string>
<string name="pageTitleExplore">Esplora</string>
<!-- page titles -->
<string name="appVersion">Versione\u0020:\u0020</string>
<string name="appBuild">Costruzione n.\u0020:\u0020</string>
<string name="repoName">Demo repo</string>
<string name="repoFullname">Repo with ORG</string>
<string name="repoDescription">Descrizione demo</string>
<string name="noData">Nessuna repository trovata</string>
<string name="orgName">Organizzazione demo</string>
<string name="orgDescription">Descrizione demo</string>
<string name="noDataOrg">Nessuna organizzazione trovata</string>
<string name="newCreateButtonCopy">Crea</string>
<string name="newUpdateButtonCopy">Aggiorna</string>
<string name="newRepoTintCopy">Nome Repository</string>
<string name="newRepoDescTintCopy">Descrizione Repository</string>
<string name="newRepoPrivateCopy">Privato</string>
<string name="newRepoDescInfo">Massimo 255 caratteri</string>
<string name="newRepoOwner">Proprietario</string>
<string name="newOrgTintCopy">Nome Organizzazione</string>
<string name="newOrgDescTintCopy">Descrizione Organizzazione</string>
<string name="newOrgDescInfo">Massimo 255 caratteri</string>
<string name="userName">Username</string>
<string name="passWord">Password</string>
<string name="btnLogin">LOGIN</string>
<string name="instanceUrl">Instance URL</string>
<string name="navigation_drawer_open">Open Navigation Drawer</string>
<string name="navigation_drawer_close">Close Navigation Drawer</string>
<string name="logo">Login to Gitea</string>
<string name="urlInfoTooltip">1- Choose the correct protocol(https or http). \n2- Enter Gitea url e.g: try.gitea.io. \n3- If you have enabled 2FA for your account, enter the code in the OTP Code field. \n4- For HTTP basic auth use USERNAME@DOMAIN.COM in the URL field.</string>
<string name="loginFailed">Wrong username/password</string>
<string name="protocolError">It is not recommended to use HTTP protocol unless you are testing on local network.</string>
<string name="malformedJson">Malformed JSON was received. Server response was not successful.</string>
<string name="emptyFieldURL">Instance URL is required</string>
<string name="emptyFieldUsername">Username is required</string>
<string name="emptyFieldPassword">Password is required</string>
<string name="checkNetConnection">Cannot access network, please check your Internet connection</string>
<string name="repoNameErrorEmpty">Repository name is empty</string>
<string name="repoNameErrorInvalid">Repository name is not valid. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="repoDescError">Repository description exceeds the max 255 characters limit</string>
<string name="repoCreated">Repository created successfully</string>
<string name="repoCreatedError">Something went wrong, please try again</string>
<string name="repoExistsError">Repository of this name already exists under selected Owner</string>
<string name="orgNameErrorEmpty">Organization name is empty</string>
<string name="orgNameErrorInvalid">Organization name is not valid, [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="orgDescError">Organization description exceeds the max 255 characters limit</string>
<string name="orgCreated">Organization created successfully</string>
<string name="orgCreatedError">Something went wrong, please try again</string>
<string name="orgExistsError">Organization already exists</string>
<string name="processingText">Processing</string>
<string name="search">Search</string>
<string name="wip">Work in progress</string>
<string name="close">Close</string>
<string name="addNewContent">Add</string>
<string name="orgContentAvatar">Org</string>
<string name="repoContentAvatar">Repo</string>
<string name="privateAvatar">Pri</string>
<string name="removeContent">Remove</string>
<string name="genericApiStatusError">Instance has returned an error. Code\u0020</string>
<string name="title_activity_repo_detail">RepoDetailActivity</string>
<string name="tab_text_info">Details</string>
<string name="tab_text_files">Files</string>
<string name="tab_text_issues">Open Issues</string>
<string name="tabItemCloseIssues">Closed Issues</string>
<string name="tab_text_ml">Milestones</string>
<string name="tab_text_releases">Releases</string>
<string name="tab_text_branches">Branches</string>
<string name="tab_text_labels">Labels</string>
<string name="action_settings">Settings</string>
<string name="tab_text_collaborators">Collaborators</string>
<string name="noDataIssueTab">No issues found</string>
<string name="infoTabRepoName1">Repository</string>
<string name="infoTabRepoOwner1">Proprietario</string>
<string name="infoTabRepoDesc">Descrizione</string>
<string name="infoTabRepoWebsite">Sito Web</string>
<string name="infoTabRepoSize">Dimensione</string>
<string name="infoTabRepoDefaultBranch">Branch predefinito</string>
<string name="infoTabRepoSshUrl">SSH URL</string>
<string name="infoTabRepoCloneUrl">Clona URL</string>
<string name="infoTabRepoRepoUrl">URL del Repo</string>
<string name="infoTabRepoForksCount">Forks</string>
<string name="infoTabRepoCreatedAt">Creato</string>
<string name="infoTabRepoUpdatedAt">Ultimo aggiornamento</string>
<string name="timeAtText">alle</string>
<string name="createdText">Aperto\u0020</string>
<string name="dueDateText">Data Scadenza</string>
<string name="issueStatusTextOpen">Stato: aperto</string>
<string name="issueStatusOpen">apri</string>
<string name="issueStatusTextClosed">Stato: chiuso</string>
<string name="issueStatusClosed">chiuso</string>
<string name="issueCreator">Creatore:\u0020</string>
<string name="issueAssigneesText">Assegnatari</string>
<string name="issueTypeIssue">Tipo: Problema</string>
<string name="issueTypePullRequest">Tipo: Richiesta Pull</string>
<string name="issueCommenter">Commentatore:\u0020</string>
<string name="issueMilestone">Milestone %1$s</string>
<string name="dueDate">Scaduto %1$s</string>
<string name="createdTime">Aperto alle: %1$s</string>
<string name="assignedTo">Assegnato a: %1$s</string>
<string name="commentButtonText">Commento</string>
<string name="commentEmptyError">Inserisci il tuo commento</string>
<string name="commentSuccess">Commento pubblicato</string>
<string name="commentError">Qualcosa è andato storto, riprova</string>
<string name="generalImgContentText">Avatar</string>
<string name="noDataMilestonesTab">Nessun milestone trovato</string>
<string name="commitAuthor">Autore commit: %1$s</string>
<string name="commitHash">Hash commit \n%1$s%2$s</string>
<string name="releaseTitle">Nome Release</string>
<string name="releaseDescription">Descrizione Release</string>
<string name="releaseDownloadText">Download</string>
<string name="releaseType">Tipo Release</string>
<string name="releaseZip">Release Zip</string>
<string name="releaseTar">Release Tar</string>
<string name="noDataReleasesTab">Nessun Release trovato</string>
<string name="releaseTag">Tag: %1$s</string>
<string name="collaboratorsNameToast">Collaboratore : %1$s</string>
<string name="noDataCollaboratorTab">Nessun collaboratore trovato</string>
<string name="editText">Modifica</string>
<string name="newMilestoneTitle">Nome</string>
<string name="newMilestoneDescription">Descrizione</string>
<string name="newMilestoneDueDate">Data Scadenza</string>
<string name="milestoneNameErrorEmpty">Milestone title is empty</string>
<string name="milestoneNameErrorInvalid">Milestone title is not valid. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="milestoneDescError">Milestone description exceeds the max 255 characters limit</string>
<string name="milestoneCreated">Milestone created successfully</string>
<string name="milestoneCreatedError">Something went wrong, please try again</string>
<string name="milestoneDateEmpty">Please choose due date</string>
<string name="milestoneOpenIssues">Open issues : %1$d</string>
<string name="milestoneClosedIssues">Closed issues : %1$d</string>
<string name="newIssueSelectAssigneesListTitle">Select Assignees</string>
<string name="newIssueSelectLabelsListTitle">Select Labels</string>
<string name="newIssueDialogDone">Done</string>
<string name="newIssueDialogCancel">Cancel</string>
<string name="newIssueTitle">Title</string>
<string name="newIssueAssigneesListTitle">Assignees</string>
<string name="newIssueDescriptionTitle">Description</string>
<string name="newIssueDueDateTitle">Due Date</string>
<string name="newIssueMilestoneTitle">Milestone</string>
<string name="newIssueLabelsTitle">Labels</string>
<string name="issueTitleEmpty">Issue title is empty</string>
<string name="issueDescriptionEmpty">Issue description is empty</string>
<string name="issueCreated">New issue created successfully</string>
<string name="issueCreatedError">Something went wrong, please try again</string>
<string name="noAssigneesFound">No collaborators found</string>
<string name="noLabelsFound">No labels found</string>
<!-- settings -->
<string name="settingsLanguageHeaderText">Translation</string>
<string name="settingsDateTimeHeaderText">Date &amp; Time</string>
<string name="settingsSave">Settings saved.</string>
<string name="settingsLanguageSelectorHeader">Language</string>
<string name="settingsLanguageSelectedHeaderDefault">English</string>
<string name="settingsAppearanceHeader">Appearance</string>
<string name="settingsDateTimeHeaderDefault">Pretty</string>
<string name="settingsLanguageSelectorDialogTitle">Choose Language</string>
<string name="settingsTimeSelectorDialogTitle">Choose Time Format</string>
<string name="settingsIssueBadgeHeaderText">Issues Badge</string>
<string name="settingsHelpTranslateText">Help us translate GitNex to your language</string>
<string name="codeBlockHeaderText">Code Block Color</string>
<string name="settingsCodeBlockSelectorDialogTitle">Code Block Color Selector</string>
<string name="settingsHomeScreenHeaderText">Home Screen</string>
<string name="settingsHomeScreenSelectedText">My Repositories</string>
<string name="settingshomeScreenSelectorDialogTitle">Select Home Screen</string>
<!-- settings -->
<string name="noMoreData">No more data available</string>
<string name="createLabel">New Label</string>
<string name="menuTitleText">Repo Menu</string>
<string name="labelName">Label Name</string>
<string name="labelColor">Label Color</string>
<string name="labelEmptyError">Label name is empty</string>
<string name="labelNameError">Label name is not valid</string>
<string name="labelCreated">Label created.</string>
<string name="labelGeneralError">Something went wrong, please try again</string>
<string name="labelUpdated">Label updated.</string>
<string name="noDataLabelsTab">No labels found</string>
<string name="labelMenuContentDesc">Desc</string>
<string name="labelMenuEdit">Edit</string>
<string name="labelMenuDelete">Delete</string>
<string name="labelDeleteText">Label deleted</string>
<string name="labelDeleteErrorText">Something went wrong, please try again</string>
<string name="noDataBranchesTab">No branches found</string>
<string name="creditsLogoDesign">Design</string>
<!-- credits - this part does not need translation -->
<!-- credits - this part does not need translation -->
<string name="alertDialogTokenRevokedTitle">Authorization Error</string>
<string name="alertDialogTokenRevokedMessage">It seems that the Access Token is revoked OR your are not allowed to see these contents. In case of revoked Token, please logout and login again</string>
<string name="alertDialogTokenRevokedCopyNegativeButton">Cancel</string>
<string name="alertDialogTokenRevokedCopyPositiveButton">Logout</string>
<string name="labelDeleteTitle">Delete\u0020</string>
<string name="labelDeleteMessage">Do you really want to delete this label?</string>
<string name="labelDeletePositiveButton">OK</string>
<string name="labelDeleteNegativeButton">Cancel</string>
<!-- org tabbed layout str -->
<string name="title_activity_org_detail">OrgDetailActivity</string>
<string name="orgTabRepos">Repositories</string>
<string name="orgTabTeams">Teams</string>
<string name="orgTabMembers">Members</string>
<string name="orgCreateTeam">New Team</string>
<string name="noDataTeams">No teams found</string>
<string name="teamTitle">Team name</string>
<string name="teamDescription">Team desc</string>
<string name="teamPermission">Permission : %1$s</string>
<string name="noDataMembers">No members found</string>
<string name="orgMember">Org members</string>
<string name="orgTeamMembers">Organization team members</string>
<!-- org tabbed layout str -->
<!-- create team -->
<string name="newTeamTitle">Team Name</string>
<string name="newTeamDesc">Description</string>
<string name="newTeamPermission">Permission</string>
<string name="newTeamAccessControls">Access Controls</string>
<string name="newTeamPermissionRead">Members can view and clone team repositories</string>
<string name="newTeamPermissionWrite">Members can read and push to team repositories</string>
<string name="newTeamPermissionAdmin">Members can pull and push to team repositories and add collaborators to them</string>
<string name="teamNameEmpty">Please enter team name</string>
<string name="teamNameError">Team name should contain only alphanumeric, dash (-), underscore (_) and dot (.) characters</string>
<string name="teamPermissionEmpty">Please select permission</string>
<string name="teamDescError">Team description have illegal characters</string>
<string name="teamDescLimit">Team description have more than 100 characters</string>
<string name="teamCreated">Team created successfully</string>
<string name="teamCreatedError">Something went wrong, please try again</string>
<!-- create team -->
<!-- edit comment -->
<string name="editCommentTitle">Edit Comment</string>
<string name="editCommentButtonText">Edit</string>
<string name="editCommentUpdatedText">Comment updated</string>
<!-- edit comment -->
<!-- add collaborator -->
<string name="addCollaboratorTitle">Add / Remove Collaborator</string>
<string name="addCollaboratorSearchHint">Search users</string>
<string name="addCollaboratorViewUserDesc">Username</string>
<string name="removeCollaboratorTitle">Remove\u0020</string>
<string name="removeCollaboratorMessage">Do you want to remove this user from the repository?</string>
<string name="removeCollaboratorToastText">User removed from the repository.</string>
<string name="addCollaboratorToastText">User added to the repository.</string>
<!-- add collaborator -->
<!-- profile section -->
<string name="profileTabFollowers">Followers</string>
<string name="profileTabFollowing">Following</string>
<string name="profileCreateNewEmailAddress">Add Email Address</string>
<string name="profileEmailButton">Save</string>
<string name="profileEmailTitle">Email Address</string>
<string name="emailAddedText">New email added successfully.</string>
<string name="emailErrorEmpty">Email address is empty.</string>
<string name="emailErrorInvalid">Email address is not valid</string>
<string name="emailErrorInUse">Email address is already in use</string>
<string name="emailTypeText">Primary</string>
<string name="profileTabEmails">Emails</string>
<!-- profile section -->
<!-- single issue section -->
<string name="singleIssueEditLabels">Add / Remove Labels</string>
<string name="labelsUpdated">Labels updated</string>
<string name="closeIssue">Close Issue</string>
<string name="replyToIssue">Add Comment</string>
<string name="editIssue">Edit Issue</string>
<string name="reOpenIssue">Reopen Issue</string>
<string name="issueStateClosed">Issue closed</string>
<string name="issueStateReopened">Issue reopened</string>
<string name="addRemoveAssignees2">Add Assignees</string>
<string name="addRemoveAssignees">Add / Remove Assignees</string>
<string name="assigneesUpdated">Assignees updated</string>
<!-- single issue section -->
<!-- multi select dialog -->
<string name="select_entry">Select Entries</string>
<string name="validation_text">Please select at least one option</string>
<string name="please_select_atleast">Please select at least </string>
<string name="you_can_only_select_upto">You can only select up to </string>
<string name="option"> option</string>
<string name="options"> options</string>
<string name="select_all">Select all</string>
<string name="de_select_all">Deselect all</string>
<!-- multi select dialog -->
<string name="repoMetaData">Repository Meta</string>
<!-- admin -->
<string name="adminCreateNewUser">Add New User</string>
<string name="adminUsers">Users</string>
<string name="userRoleAdmin">Admin</string>
<!-- admin -->
<!-- create user -->
<string name="userFullNameText">Full Name</string>
<string name="userEmail">Email</string>
<string name="userUserName">Username</string>
<string name="userPassword">Password</string>
<string name="userInvalidFullName">Invalid Full Name</string>
<string name="userInvalidUserName">Invalid Username</string>
<string name="userInvalidEmail">Invalid Email</string>
<string name="userCreatedText">New user added successfully</string>
<string name="userExistsError">User already exists</string>
<!-- create user -->
<!-- sponsors -->
<!-- sponsors -->
<!-- edit issue -->
<string name="editIssueNavHeader">Edit Issue #%1$s</string>
<string name="editIssueSuccessMessage">Issue updated.</string>
<!-- edit issue -->
<!-- release -->
<string name="createRelease">New Release</string>
<string name="releaseTagNameText">Tag Name</string>
<string name="releaseTitleText">Title</string>
<string name="releaseContentText">Content</string>
<string name="releaseTypeText">Mark as Pre-Release</string>
<string name="releaseBranchText">Select Branch</string>
<string name="releaseDraftText">Draft</string>
<string name="tagNameErrorEmpty">Tag name is empty</string>
<string name="titleErrorEmpty">Title is empty</string>
<string name="releaseCreatedText">New release created</string>
<!-- release -->
<string name="loginOTPError">Enter OTP code</string>
<string name="loginOTPTypeError">OTP code should be numbers.</string>
<string name="loginOTP">OTP Code (Optional)</string>
<string name="otpMessage">Enter the otp code if 2FA is enabled</string>
<string name="openWebRepo">Open in Browser</string>
<string name="repoStargazersInMenu">Stargazers</string>
<string name="repoWatchersInMenu">Watchers</string>
<string name="noDataStargazers">No stars found</string>
<string name="noDataWatchers">No watchers found</string>
<string name="starMember">Star</string>
<string name="watcherMember">Watcher</string>
<string name="commitLinkBranchesTab">Commit</string>
<string name="zipArchiveDownloadReleasesTab">Zip Archive</string>
<string name="tarArchiveDownloadReleasesTab">Tar Archive</string>
<!-- new file -->
<string name="newFileNameTintCopy">File Name</string>
<string name="newFileBranchTintCopy">New Branch Name</string>
<string name="newFileContentTintCopy">File Content</string>
<string name="newFileButtonCopy">Create New File</string>
<string name="newFileNameHintMessage">with folder: app/test.md</string>
<string name="newFileMessageTintCopy">Commit Message</string>
<string name="newFileInvalidBranchName">Invalid branch name, may only contain &#8211;, a&#8211;z, 0&#8211;9</string>
<string name="newFileCommitMessageError">Commit message is too long</string>
<string name="newFileSuccessMessage">New file created</string>
<string name="newFileOldBranches">Current Branches</string>
<string name="newFileRequiredFields">Fields like filename, content and commit message are required</string>
<string name="newFileCurrentBranchMessage">Selecting current branch will disable new branch</string>
<string name="newFileNewBranchMessage">e.g: new-branch</string>
<string name="newFileRequiredFieldNewBranchName">New branch name cannot be empty if current branch is not selected</string>
<string name="strFilter">Filter</string>
<string name="copyIssueUrl">Copy Issue URL</string>
<string name="copyIssueUrlToastMsg">Issue URL copied to clipboard</string>
<string name="milestoneCompletion">%1$d\uFF05 completed</string>
<!-- files -->
<string name="noDataFilesTab">No files found</string>
<string name="filesDirNotSupportedYet">Directory browsing is not supported yet</string>
<string name="filesGenericError">Sorry this file cannot be viewed as API returned an error</string>
<string name="filesBreadcrumb">Root</string>
<!-- generic copy -->
<string name="okButton">OK</string>
<string name="doneButton">Done</string>
<string name="cancelButton">Cancel</string>
<string name="genericError">Something went wrong, please try again</string>
<string name="apiNotFound">This request needs higher Gitea version than the one installed. Please upgrade your instance to the latest version of Gitea.</string>
<string name="noDataFound">No data found</string>
<string name="addButton">Add</string>
<string name="removeButton">Remove</string>
<string name="authorizeError">You are not authorized to perform this action.</string>
<string name="menuContentDesc">Menu</string>
<string name="menuEditText">Edit</string>
<string name="menuDeleteText">Delete</string>
<string name="modifiedText">edited</string>
<string name="saveButton">Save</string>
<string name="nameText">Name</string>
<string name="descriptionText">Description</string>
<string name="websiteText">Website</string>
<string name="locationText">Location</string>
<string name="characters255Limit">Max 255 characters</string>
<string name="emptyFields">All fields are required</string>
<!-- generic copy -->
<string name="translateText">Translate GitNex with Crowdin</string>
<string name="exploreTextBoxHint">Explore repositories</string>
<string name="starRepository">Star Repository</string>
<string name="unStarRepository">Unstar Repository</string>
<string name="starRepositorySuccess">Repository added to starred list</string>
<string name="unStarRepositorySuccess">Repository removed from starred list</string>
<string name="watchRepository">Watch Repository</string>
<string name="unWatchRepository">Unwatch Repository</string>
<string name="watchRepositorySuccess">Repository added to watch list</string>
<string name="unWatchRepositorySuccess">Repository removed from watch list</string>
</resources>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources>
<!-- menu items -->
<string name="navMyRepos">Мои репозитории</string>
<string name="navStarredRepos">Избранные репозитории</string>
@ -11,8 +11,8 @@
<string name="navAbout">О программе</string>
<string name="navRate">Rate GitNex</string>
<string name="navLogout">Выход</string>
<string name="navExplore">Explore</string>
<!-- menu items -->
<!-- page titles -->
<string name="pageTitleAbout">О программе</string>
<string name="pageTitleHome">Главная</string>
@ -34,33 +34,27 @@
<string name="pageTitleCreateTeam">Создать команду</string>
<string name="pageTitleAddEmail">Добавить адрес эл. почты</string>
<string name="pageTitleNewFile">New File</string>
<string name="pageTitleExplore">Explore</string>
<!-- page titles -->
<string name="appVersion">Версия\u0020:\u0020</string>
<string name="appBuild">№ сборки\u0020:\u0020</string>
<string name="repoName">Демо репозиторий</string>
<string name="repoFullname">Репозиторий с организацией</string>
<string name="repoDescription">Демо описание</string>
<string name="noData">Репозиториев не обнаружено</string>
<string name="orgName">Демо организации</string>
<string name="orgDescription">Демо описание</string>
<string name="noDataOrg">Организаций не обнаружено</string>
<string name="newCreateButtonCopy">Создать</string>
<string name="newUpdateButtonCopy">Обновить</string>
<string name="newRepoTintCopy">Имя репозитория</string>
<string name="newRepoDescTintCopy">Описание репозитория</string>
<string name="newRepoPrivateCopy">Приватный</string>
<string name="newRepoDescInfo">Макс. 255 символов</string>
<string name="newRepoOwner">Владелец</string>
<string name="newOrgTintCopy">Имя организации</string>
<string name="newOrgDescTintCopy">Описание организации</string>
<string name="newOrgDescInfo">Макс. 255 символов</string>
<string name="userName">Имя пользователя</string>
<string name="passWord">Пароль</string>
<string name="btnLogin">Войти</string>
@ -70,47 +64,37 @@
<string name="logo">Войти в Gitea</string>
<string name="urlInfoTooltip">1- Выберите протокол (https или http) \n2- Введите инстанцию Gitea, например: try.gitea.io \n3- For 2FA enter USERNAME:CODE in the Username field \n4- For HTTP basic auth use USERNAME@DOMAIN.COM in the URL field</string>
<string name="loginFailed">Неверные логин и/или пароль</string>
<string name="protocolDelimiter">://</string>
<string name="protocolError">Не рекомендуется использовать протокол HTTP, если вы не тестируете инстанцию в локальной сети.</string>
<string name="malformedJson">Неожиданный ответ от сервера. Попробуйте сменить протокол или обратитесь к администратору инстанции.</string>
<string name="emptyFieldURL">Instance URL is required</string>
<string name="emptyFieldUsername">Username is required</string>
<string name="emptyFieldPassword">Password is required</string>
<string name="checkNetConnection">Нет подключения к интернету, проверьте наличие связи.</string>
<string name="emptyFields">Все поля обязательны для заполнения</string>
<string name="repoNameErrorEmpty">Название репозитория пустое.</string>
<string name="repoNameErrorInvalid">Недоступное название репозитория. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="repoDescError">Описание репозитория превышает 255 символов.</string>
<string name="repoCreated">Репозиторий успешно создан!</string>
<string name="repoCreatedError">Что-то пошло не так. Пожалуйста, попытайтесь еще раз.</string>
<string name="repoExistsError">Repository of this name already exists under selected Owner</string>
<string name="orgNameErrorEmpty">Название организации пустое.</string>
<string name="orgNameErrorInvalid">Недоступное название организации. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="orgDescError">Описание организации превышает 255 символов.</string>
<string name="orgCreated">Организация успешно создана!</string>
<string name="orgCreatedError">Что-то пошло не так. Пожалуйста, попытайтесь еще раз.</string>
<string name="orgExistsError">Organization already exists</string>
<string name="processingText">Обработка</string>
<string name="search">Поиск</string>
<string name="wip">Работа в процессе</string>
<string name="close">Закрыть</string>
<string name="addNewContent">Добавить</string>
<string name="orgContentAvatar">Орг.</string>
<string name="repoContentAvatar">Реп.</string>
<string name="privateAvatar">Лич.</string>
<string name="repoStars">12345</string>
<string name="repoWatchers">98324</string>
<string name="repoIssues">54321</string>
<string name="removeContent">Удалить</string>
<string name="genericApiStatusError">Инстанция вернула ошибку. Код\u0020</string>
<string name="title_activity_repo_detail">Активность</string>
<string name="tab_text_info">Детали</string>
<string name="tab_text_files">Files</string>
<string name="tab_text_issues">Открытые задачи</string>
<string name="tabItemCloseIssues">Закрытые задачи</string>
<string name="tab_text_ml">Вехи</string>
@ -119,9 +103,7 @@
<string name="tab_text_labels">Метки</string>
<string name="action_settings">Настройки</string>
<string name="tab_text_collaborators">Сотрудники</string>
<string name="noDataIssueTab">Задач не обнаружено</string>
<string name="infoTabRepoName1">Репозиторий</string>
<string name="infoTabRepoOwner1">Владелец</string>
<string name="infoTabRepoDesc">Описание</string>
@ -134,13 +116,7 @@
<string name="infoTabRepoForksCount">Кол-во форков</string>
<string name="infoTabRepoCreatedAt">Создан</string>
<string name="infoTabRepoUpdatedAt">Последнее обновление</string>
<string name="infoTabRepoDummyTime">2018&#8211;10&#8211;30 08:25:25</string>
<string name="infoTabRepoBlank">&#8230;</string>
<string name="infoTabRepoZero">0</string>
<string name="infoTabRepoDefaultBranchText">master</string>
<string name="timeAtText">в</string>
<string name="hash">#</string>
<string name="createdText">Создано\u0020</string>
<string name="dueDateText">Дата исполнения</string>
<string name="issueStatusTextOpen">Статус: открыта</string>
@ -152,7 +128,6 @@
<string name="issueTypeIssue">Тип: задача</string>
<string name="issueTypePullRequest">Тип: pull request</string>
<string name="issueCommenter">Комментатор:\u0020</string>
<string name="issueTitleWithId">#%1$d %2$s</string>
<string name="issueMilestone">Вехи %1$s</string>
<string name="dueDate">Исполнение %1$s</string>
<string name="createdTime">Создано %1$s</string>
@ -161,15 +136,10 @@
<string name="commentEmptyError">Введите свой комментарий.</string>
<string name="commentSuccess">Комментарий отправлен!</string>
<string name="commentError">Что-то пошло не так. Пожалуйста, попытайтесь еще раз.</string>
<string name="generalImgContentText">Аватар</string>
<string name="generalPageTitle">GitNex</string>
<string name="noDataMilestonesTab">Вех не обнаружено</string>
<string name="commitAuthor">Автор коммита: %1$s</string>
<string name="commitHash">Хеш коммита \n%1$s%2$s</string>
<string name="releaseTitle">Заголовок релиза</string>
<string name="releaseDescription">Описание релиза</string>
<string name="releaseDownloadText">Скачать</string>
@ -178,16 +148,12 @@
<string name="releaseTar">Релиз в tar</string>
<string name="noDataReleasesTab">Релизов не обнаружено</string>
<string name="releaseTag">Tag: %1$s</string>
<string name="collaboratorsNameToast">Сотрудники: %1$s</string>
<string name="noDataCollaboratorTab">Сотрудников не обнаружено</string>
<string name="editText">Изменить</string>
<string name="newMilestoneTitle">Заголовок</string>
<string name="newMilestoneDescription">Описание</string>
<string name="newMilestoneDueDate">Дата исполнения</string>
<string name="setDueDate">%1$d-%2$d-%3$d</string>
<string name="milestoneNameErrorEmpty">Заголовок вехи пустой.</string>
<string name="milestoneNameErrorInvalid">Недоступный заголовок вехи. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="milestoneDescError">Описание вехи превышает 255 символов.</string>
@ -196,7 +162,6 @@
<string name="milestoneDateEmpty">Надо задать дату вехи.</string>
<string name="milestoneOpenIssues">Открыть задачу: %1$d</string>
<string name="milestoneClosedIssues">Закрыть задачу: %1$d</string>
<string name="newIssueSelectAssigneesListTitle">Выбрать сотрудников</string>
<string name="newIssueSelectLabelsListTitle">Выбрать метки</string>
<string name="newIssueDialogDone">Готово</string>
@ -207,15 +172,12 @@
<string name="newIssueDueDateTitle">Дата исполнения</string>
<string name="newIssueMilestoneTitle">Вехи</string>
<string name="newIssueLabelsTitle">Метки</string>
<string name="spinnerMilestoneText">%1$s [%2$s]</string>
<string name="dialogAssignessText">%1$s - @%2$s</string>
<string name="issueTitleEmpty">Заголовок задачи пустой.</string>
<string name="issueDescriptionEmpty">Описание задачи пустое.</string>
<string name="issueCreated">Задача успешно добавлена!</string>
<string name="issueCreatedError">Что-то пошло не так. Пожалуйста, попытайтесь еще раз.</string>
<string name="noAssigneesFound">Сотрудников не обнаружено</string>
<string name="noLabelsFound">Меток не обнаружено</string>
<!-- settings -->
<string name="settingsLanguageHeaderText">Перевод</string>
<string name="settingsDateTimeHeaderText">Дата и время</string>
@ -234,40 +196,34 @@
<string name="settingsHomeScreenSelectedText">My Repositories</string>
<string name="settingshomeScreenSelectorDialogTitle">Select Home Screen</string>
<!-- settings -->
<string name="noMoreData">Нет новых данных.</string>
<string name="noMoreData">No more data available</string>
<string name="createLabel">Создание метки</string>
<string name="menuTitleText">Меню репозитория</string>
<string name="labelName">Название метки</string>
<string name="labelColor">Цвет метки</string>
<string name="labelEmptyError">Название метки пустое.</string>
<string name="labelNameError">Название метки неверное.</string>
<string name="labelEmptyError">Label name is empty</string>
<string name="labelNameError">Label name is not valid</string>
<string name="labelCreated">Метка создана.</string>
<string name="labelGeneralError">Что-то пошло не так. Пожалуйста, попытайтесь еще раз.</string>
<string name="labelGeneralError">Something went wrong, please try again</string>
<string name="labelUpdated">Метка обновлена.</string>
<string name="noDataLabelsTab">Меток не обнаружено</string>
<string name="labelMenuContentDesc">Описание</string>
<string name="labelMenuEdit">Редактировать</string>
<string name="labelMenuDelete">Удалить</string>
<string name="labelDeleteText">Метка удалена!</string>
<string name="labelDeleteErrorText">Что-то пошло не так. Пожалуйста, попытайтесь еще раз.</string>
<string name="noDataBranchesTab">Веток не обнаружено</string>
<string name="creditsLogoDesign">Дизайн</string>
<!-- credits - this part does not need translation -->
<!-- credits - this part does not need translation -->
<string name="alertDialogTokenRevokedTitle">Ошибка авторизации</string>
<string name="alertDialogTokenRevokedMessage">Похоже, что токен доступа отозван, или вам не разрешено просматривать это содержимое. В случае отзыва токена, пожалуйста, выйдите из системы и войдите снова.</string>
<string name="alertDialogTokenRevokedMessage">It seems that the Access Token is revoked OR your are not allowed to see these contents. In case of revoked Token, please logout and login again</string>
<string name="alertDialogTokenRevokedCopyNegativeButton">Закрыть</string>
<string name="alertDialogTokenRevokedCopyPositiveButton">Выход</string>
<string name="labelDeleteTitle">Удалить\u0020</string>
<string name="labelDeleteMessage">Вы действительно хотите удалить эту метку?</string>
<string name="labelDeletePositiveButton">Да</string>
<string name="labelDeleteNegativeButton">Отмена</string>
<!-- org tabbed layout str -->
<string name="title_activity_org_detail">Активность организации</string>
<string name="orgTabRepos">Репозитории</string>
@ -282,30 +238,27 @@
<string name="orgMember">Участники организации</string>
<string name="orgTeamMembers">Участники команд организации</string>
<!-- org tabbed layout str -->
<!-- create team -->
<string name="newTeamTitle">Имя команды</string>
<string name="newTeamDesc">Описание</string>
<string name="newTeamPermission">Права</string>
<string name="newTeamAccessControls">Контроль доступа</string>
<string name="newTeamPermissionRead">Участники могут просматривать и клонировать репозитории команд.</string>
<string name="newTeamPermissionWrite">Участники могут читать и изменять в репозиториях команды.</string>
<string name="newTeamPermissionAdmin">Участники могут читать и изменять в репозиториях команды и добавлять к ним других участников.</string>
<string name="teamNameEmpty">Укажите имя команды.</string>
<string name="teamNameError">Название команды должно содержать только буквы, цифры, тире (-), подчеркивание (_) и точку (.)</string>
<string name="teamPermissionEmpty">Укажите права.</string>
<string name="teamDescError">В описании команды есть недопустимые символы.</string>
<string name="teamDescLimit">В описании команды более 100 символов.</string>
<string name="teamCreated">Команда создана успешно.</string>
<string name="teamCreatedError">Что-то пошло не так. Пожалуйста, попытайтесь еще раз.</string>
<string name="newTeamPermissionRead">Members can view and clone team repositories</string>
<string name="newTeamPermissionWrite">Members can read and push to team repositories</string>
<string name="newTeamPermissionAdmin">Members can pull and push to team repositories and add collaborators to them</string>
<string name="teamNameEmpty">Please enter team name</string>
<string name="teamNameError">Team name should contain only alphanumeric, dash (-), underscore (_) and dot (.) characters</string>
<string name="teamPermissionEmpty">Please select permission</string>
<string name="teamDescError">Team description have illegal characters</string>
<string name="teamDescLimit">Team description have more than 100 characters</string>
<string name="teamCreated">Team created successfully</string>
<string name="teamCreatedError">Something went wrong, please try again</string>
<!-- create team -->
<!-- edit comment -->
<string name="editCommentTitle">Редактировать комментарий</string>
<string name="editCommentButtonText">Редактировать</string>
<string name="editCommentUpdatedText">Комментарий обновлен</string>
<!-- edit comment -->
<!-- add collaborator -->
<string name="addCollaboratorTitle">Добавить сотрудника</string>
<string name="addCollaboratorSearchHint">Поиск</string>
@ -315,7 +268,6 @@
<string name="removeCollaboratorToastText">С пользователя были сняты права сотрудника.</string>
<string name="addCollaboratorToastText">Пользователь получает права сотрудника!</string>
<!-- add collaborator -->
<!-- profile section -->
<string name="profileTabFollowers">Подписчики</string>
<string name="profileTabFollowing">Подписки</string>
@ -324,12 +276,11 @@
<string name="profileEmailTitle">Адрес эл. почты</string>
<string name="emailAddedText">Новый адрес электронной почты успешно добавлен.</string>
<string name="emailErrorEmpty">Адрес электронной почты пустой.</string>
<string name="emailErrorInvalid">Недоступный адрес электронной почты.</string>
<string name="emailErrorInUse">Адрес электронной почты уже используется.</string>
<string name="emailErrorInvalid">Email address is not valid</string>
<string name="emailErrorInUse">Email address is already in use</string>
<string name="emailTypeText">Основной</string>
<string name="profileTabEmails">Адреса эл. почты</string>
<!-- profile section -->
<!-- single issue section -->
<string name="singleIssueEditLabels">Добавить/удалить метку</string>
<string name="labelsUpdated">Метки обновлены</string>
@ -343,7 +294,6 @@
<string name="addRemoveAssignees">Add / Remove Assignees</string>
<string name="assigneesUpdated">Assignees updated</string>
<!-- single issue section -->
<!-- multi select dialog -->
<string name="select_entry">Select Entries</string>
<string name="validation_text">Please select at least one option</string>
@ -354,15 +304,12 @@
<string name="select_all">Select all</string>
<string name="de_select_all">Deselect all</string>
<!-- multi select dialog -->
<string name="repoMetaData">Repository Meta</string>
<!-- admin -->
<string name="adminCreateNewUser">Создать нового пользователя</string>
<string name="adminUsers">Users</string>
<string name="userRoleAdmin">Admin</string>
<!-- admin -->
<!-- create user -->
<string name="userFullNameText">Полное имя</string>
<string name="userEmail">Адрес электронной почты</string>
@ -374,12 +321,12 @@
<string name="userCreatedText">Новый пользователь успешно создан</string>
<string name="userExistsError">User already exists</string>
<!-- create user -->
<!-- sponsors -->
<!-- sponsors -->
<!-- edit issue -->
<string name="editIssueNavHeader">Редактировать задачу #%1$s</string>
<string name="editIssueSuccessMessage">Задача отредактирована.</string>
<!-- edit issue -->
<!-- release -->
<string name="createRelease">Create Release</string>
<string name="releaseTagNameText">Tag Name</string>
@ -392,23 +339,20 @@
<string name="titleErrorEmpty">Title is empty</string>
<string name="releaseCreatedText">New release created</string>
<!-- release -->
<string name="loginOTPError">Enter OTP code</string>
<string name="loginOTPTypeError">OTP code should be numbers.</string>
<string name="loginOTP">OTP Code (Optional)</string>
<string name="otpMessage">Enter the otp code if 2FA is enabled</string>
<string name="openWebRepo">Открыть с помощью браузера</string>
<string name="repoStargazersInMenu">Stargazers</string>
<string name="repoWatchersInMenu">Watchers</string>
<string name="noDataStargazers">No stars found</string>
<string name="noDataWatchers">No watchers found</string>
<string name="starMember">Star</string>
<string name="watcherMember">Watcher</string>
<string name="commitLinkBranchesTab">Commit</string>
<string name="zipArchiveDownloadReleasesTab">Zip Archive</string>
<string name="tarArchiveDownloadReleasesTab">Tar Archive</string>
<!-- new file -->
<string name="newFileNameTintCopy">File Name</string>
<string name="newFileBranchTintCopy">Branch Name</string>
@ -420,18 +364,19 @@
<string name="newFileCommitMessageError">Commit message is too long</string>
<string name="newFileSuccessMessage">New file created</string>
<string name="newFileOldBranches">Current Branches</string>
<string name="newFileRequiredFields">Fields like filename, contents and commit message are required.</string>
<string name="newFileRequiredFields">Fields like filename, content and commit message are required</string>
<string name="newFileCurrentBranchMessage">Selecting current branch will disable new branch</string>
<string name="newFileNewBranchMessage">e.g: new-branch</string>
<string name="newFileRequiredFieldNewBranchName">New branch name cannot be empty if current branch is not selected</string>
<string name="strFilter">Filter</string>
<string name="copyIssueUrl">Copy Issue URL</string>
<string name="copyIssueUrlToastMsg">Issue URL copied to clipboard</string>
<string name="milestoneCompletion">%1$d\uFF05 выполненный</string>
<!-- files -->
<string name="noDataFilesTab">No files found</string>
<string name="filesDirNotSupportedYet">Directory browsing is not supported yet</string>
<string name="filesGenericError">Sorry this file cannot be viewed as API returned an error</string>
<string name="filesBreadcrumb">Root</string>
<!-- generic copy -->
<string name="okButton">OK</string>
<string name="doneButton">Готово</string>
@ -451,8 +396,17 @@
<string name="descriptionText">Описание</string>
<string name="websiteText">Веб-сайт</string>
<string name="locationText">Место расположения</string>
<string name="openWebRepo">Открыть с помощью браузера</string>
<string name="characters255Limit">Max 255 characters</string>
<string name="emptyFields">Все поля обязательны для заполнения</string>
<!-- generic copy -->
<string name="translateText">Translate GitNex with Crowdin</string>
<string name="exploreTextBoxHint">Explore repositories</string>
<string name="starRepository">Star Repository</string>
<string name="unStarRepository">Unstar Repository</string>
<string name="starRepositorySuccess">Repository added to starred list</string>
<string name="unStarRepositorySuccess">Repository removed from starred list</string>
<string name="watchRepository">Watch Repository</string>
<string name="unWatchRepository">Unwatch Repository</string>
<string name="watchRepositorySuccess">Repository added to watch list</string>
<string name="unWatchRepositorySuccess">Repository removed from watch list</string>
</resources>

View File

@ -0,0 +1,412 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources>
<!-- menu items -->
<string name="navMyRepos">Моји репозиторијуми</string>
<string name="navStarredRepos">Омиљени репозиторијуми</string>
<string name="navRepos">Репозиторијуми</string>
<string name="navProfile">Профил</string>
<string name="navSettings">Подешавања</string>
<string name="navOrgs">Организације</string>
<string name="navAbout">О програму</string>
<string name="navRate">Оцени GitNex</string>
<string name="navLogout">Одјави ме</string>
<string name="navExplore">Истражи</string>
<!-- menu items -->
<!-- page titles -->
<string name="pageTitleAbout">О програму</string>
<string name="pageTitleHome">Почетни екран</string>
<string name="pageTitleMyRepos">Моји репозиторијуми</string>
<string name="pageTitleRepositories">Репозиторијуми</string>
<string name="pageTitleProfile">Профил</string>
<string name="pageTitleNewRepo">Нови репозиторијум</string>
<string name="pageTitleOrganizations">Организације</string>
<string name="pageTitleIssues">Проблеми</string>
<string name="pageTitleSettings">Подешавања</string>
<string name="pageTitleCreateOrganization">Нова организација</string>
<string name="pageTitleCreateMilestone">New Milestone</string>
<string name="pageTitleCreateNewIssue">Нови проблем</string>
<string name="pageTitleCreateLabel">Нова ознака</string>
<string name="pageTitleCredits">Заслуге</string>
<string name="pageTitleLabelUpdate">Ажурирај ознаку</string>
<string name="pageTitleSponsors">Спонзори</string>
<string name="pageTitleStarredRepos">Омиљени репозиторијуми</string>
<string name="pageTitleCreateTeam">Нови тим</string>
<string name="pageTitleAddEmail">Додај имејл-адресу</string>
<string name="pageTitleNewFile">Нови фајл</string>
<string name="pageTitleExplore">Истражи</string>
<!-- page titles -->
<string name="appVersion">Верзија\u0020:\u0020</string>
<string name="appBuild">Build No.\u0020:\u0020</string>
<string name="repoName">Демо репозиторијум</string>
<string name="repoFullname">Repo with ORG</string>
<string name="repoDescription">Демо опис</string>
<string name="noData">Ниједан репозиторијум није пронађен</string>
<string name="orgName">Демо организација</string>
<string name="orgDescription">Демо опис</string>
<string name="noDataOrg">Ниједна организација није пронађена</string>
<string name="newCreateButtonCopy">Креирај</string>
<string name="newUpdateButtonCopy">Ажурирај</string>
<string name="newRepoTintCopy">Назив репозиторијума</string>
<string name="newRepoDescTintCopy">Опис репозиторијума</string>
<string name="newRepoPrivateCopy">Приватни</string>
<string name="newRepoDescInfo">Максимално 255 карактера</string>
<string name="newRepoOwner">Власник</string>
<string name="newOrgTintCopy">Назив организације</string>
<string name="newOrgDescTintCopy">Опис организације</string>
<string name="newOrgDescInfo">Максимално 255 карактера</string>
<string name="userName">Корисничко име</string>
<string name="passWord">Лозинка</string>
<string name="btnLogin">Пријави ме</string>
<string name="instanceUrl">URL инстанце</string>
<string name="navigation_drawer_open">Open Navigation Drawer</string>
<string name="navigation_drawer_close">Close Navigation Drawer</string>
<string name="logo">Login to Gitea</string>
<string name="urlInfoTooltip">1- Choose the correct protocol(https or http). \n2- Enter Gitea url e.g: try.gitea.io. \n3- If you have enabled 2FA for your account, enter the code in the OTP Code field. \n4- For HTTP basic auth use USERNAME@DOMAIN.COM in the URL field.</string>
<string name="loginFailed">Погрешно корисничко име или лозинка</string>
<string name="protocolError">Употреба HTTP протокола није препоручена уколико не тестираш на локалној мрежи</string>
<string name="malformedJson">Malformed JSON was received. Server response was not successful.</string>
<string name="emptyFieldURL">URL инстанце је обавезан</string>
<string name="emptyFieldUsername">Корисничко име је обавезно</string>
<string name="emptyFieldPassword">Лозинка је обавезна</string>
<string name="checkNetConnection">Cannot access network, please check your Internet connection</string>
<string name="repoNameErrorEmpty">Назив репозиторијума је обавезан</string>
<string name="repoNameErrorInvalid">Назив репозиторијума није валидан [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="repoDescError">Опис је дужи од максималних 255 карактера</string>
<string name="repoCreated">Репозиторијум је успешно креиран</string>
<string name="repoCreatedError">Нешто је пошло наопако, покушај поново</string>
<string name="repoExistsError">Репозиторијум већ постоји</string>
<string name="orgNameErrorEmpty">Назив организације је обавезан</string>
<string name="orgNameErrorInvalid">Назив организације није валидан [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="orgDescError">Опис је дужи од максималних 255 карактера</string>
<string name="orgCreated">Организација је успешно креирана</string>
<string name="orgCreatedError">Нешто је пошло наопако, покушај поново</string>
<string name="orgExistsError">Организација већ постоји</string>
<string name="processingText">Processing</string>
<string name="search">Претражи</string>
<string name="wip">Work in progress</string>
<string name="close">Затвори</string>
<string name="addNewContent">Додај</string>
<string name="orgContentAvatar">Org</string>
<string name="repoContentAvatar">Repo</string>
<string name="privateAvatar">Pri</string>
<string name="removeContent">Уклони</string>
<string name="genericApiStatusError">Instance has returned an error. Code\u0020</string>
<string name="title_activity_repo_detail">RepoDetailActivity</string>
<string name="tab_text_info">Детаљи</string>
<string name="tab_text_files">Фајлови</string>
<string name="tab_text_issues">Текући проблеми</string>
<string name="tabItemCloseIssues">Решени проблеми</string>
<string name="tab_text_ml">Milestones</string>
<string name="tab_text_releases">Releases</string>
<string name="tab_text_branches">Гране</string>
<string name="tab_text_labels">Ознаке</string>
<string name="action_settings">Подешавања</string>
<string name="tab_text_collaborators">Сарадници</string>
<string name="noDataIssueTab">Ниједан задатак није пронађен</string>
<string name="infoTabRepoName1">Репозиторијум</string>
<string name="infoTabRepoOwner1">Власник</string>
<string name="infoTabRepoDesc">Опис</string>
<string name="infoTabRepoWebsite">Веб-сајт</string>
<string name="infoTabRepoSize">Величина</string>
<string name="infoTabRepoDefaultBranch">Подразумевана грана</string>
<string name="infoTabRepoSshUrl">SSH URL</string>
<string name="infoTabRepoCloneUrl">HTTPS URL</string>
<string name="infoTabRepoRepoUrl">URL репозиторијума</string>
<string name="infoTabRepoForksCount">Број форкова</string>
<string name="infoTabRepoCreatedAt">Креиран</string>
<string name="infoTabRepoUpdatedAt">Last Updated</string>
<string name="timeAtText">у</string>
<string name="createdText">Opened\u0020</string>
<string name="dueDateText">Рок</string>
<string name="issueStatusTextOpen">Status: open</string>
<string name="issueStatusOpen">open</string>
<string name="issueStatusTextClosed">Status: closed</string>
<string name="issueStatusClosed">closed</string>
<string name="issueCreator">Creator :\u0020</string>
<string name="issueAssigneesText">Assignees</string>
<string name="issueTypeIssue">Type: Issue</string>
<string name="issueTypePullRequest">Type: Pull Request</string>
<string name="issueCommenter">Commenter:\u0020</string>
<string name="issueMilestone">Milestone %1$s</string>
<string name="dueDate">Due %1$s</string>
<string name="createdTime">Opened %1$s</string>
<string name="assignedTo">Assigned to: %1$s</string>
<string name="commentButtonText">Коментар</string>
<string name="commentEmptyError">Please write your comment</string>
<string name="commentSuccess">Comment posted</string>
<string name="commentError">Нешто је пошло наопако, покушај поново</string>
<string name="generalImgContentText">Аватар</string>
<string name="noDataMilestonesTab">No milestones found</string>
<string name="commitAuthor">Commit author: %1$s</string>
<string name="commitHash">Commit hash \n%1$s%2$s</string>
<string name="releaseTitle">Release Title</string>
<string name="releaseDescription">Release Description</string>
<string name="releaseDownloadText">Преузимања</string>
<string name="releaseType">Release Type</string>
<string name="releaseZip">Release Zip</string>
<string name="releaseTar">Release Tar</string>
<string name="noDataReleasesTab">No releases found</string>
<string name="releaseTag">Tag: %1$s</string>
<string name="collaboratorsNameToast">Collaborator : %1$s</string>
<string name="noDataCollaboratorTab">Ниједан сарадник није пронађен</string>
<string name="editText">Уреди</string>
<string name="newMilestoneTitle">Наслов</string>
<string name="newMilestoneDescription">Опис</string>
<string name="newMilestoneDueDate">Рок</string>
<string name="milestoneNameErrorEmpty">Milestone title is empty</string>
<string name="milestoneNameErrorInvalid">Milestone title is not valid. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="milestoneDescError">Опис је дужи од максималних 255 карактера</string>
<string name="milestoneCreated">Milestone created successfully</string>
<string name="milestoneCreatedError">Нешто је пошло наопако, покушај поново</string>
<string name="milestoneDateEmpty">Please choose due date</string>
<string name="milestoneOpenIssues">Open issues : %1$d</string>
<string name="milestoneClosedIssues">Closed issues : %1$d</string>
<string name="newIssueSelectAssigneesListTitle">Select Assignees</string>
<string name="newIssueSelectLabelsListTitle">Одабери ознаке</string>
<string name="newIssueDialogDone">Done</string>
<string name="newIssueDialogCancel">Откажи</string>
<string name="newIssueTitle">Наслов</string>
<string name="newIssueAssigneesListTitle">Assignees</string>
<string name="newIssueDescriptionTitle">Опис</string>
<string name="newIssueDueDateTitle">Рок</string>
<string name="newIssueMilestoneTitle">Milestone</string>
<string name="newIssueLabelsTitle">Ознаке</string>
<string name="issueTitleEmpty">Наслов проблема је обавезан</string>
<string name="issueDescriptionEmpty">Опис проблема је обавезан</string>
<string name="issueCreated">Проблем је успешно креиран</string>
<string name="issueCreatedError">Нешто је пошло наопако, покушај поново</string>
<string name="noAssigneesFound">Ниједан сарадник није пронађен</string>
<string name="noLabelsFound">Ниједна ознака није пронађена</string>
<!-- settings -->
<string name="settingsLanguageHeaderText">Превод</string>
<string name="settingsDateTimeHeaderText">Датум и време</string>
<string name="settingsSave">Подешавања су сачувана</string>
<string name="settingsLanguageSelectorHeader">Језик</string>
<string name="settingsLanguageSelectedHeaderDefault">Енглески</string>
<string name="settingsAppearanceHeader">Изглед</string>
<string name="settingsDateTimeHeaderDefault">Pretty</string>
<string name="settingsLanguageSelectorDialogTitle">Одабери језик</string>
<string name="settingsTimeSelectorDialogTitle">Одабери формат</string>
<string name="settingsIssueBadgeHeaderText">Прикажи број текућих проблема</string>
<string name="settingsHelpTranslateText">Help us translate GitNex to your language</string>
<string name="codeBlockHeaderText">Code Block Color</string>
<string name="settingsCodeBlockSelectorDialogTitle">Code Block Color Selector</string>
<string name="settingsHomeScreenHeaderText">Почетни екран</string>
<string name="settingsHomeScreenSelectedText">Моји репозиторијуми</string>
<string name="settingshomeScreenSelectorDialogTitle">Одабери почетни екран</string>
<!-- settings -->
<string name="noMoreData">No more data available</string>
<string name="createLabel">Нова ознака</string>
<string name="menuTitleText">Мени репозиторијума</string>
<string name="labelName">Назив ознаке</string>
<string name="labelColor">Боја ознаке</string>
<string name="labelEmptyError">Назив ознаке је обавезан</string>
<string name="labelNameError">Назив ознаке није валидан</string>
<string name="labelCreated">Ознака је креирана</string>
<string name="labelGeneralError">Нешто је пошло наопако, покушај поново</string>
<string name="labelUpdated">Ознака је ажурирана</string>
<string name="noDataLabelsTab">Ниједна ознака није пронађена</string>
<string name="labelMenuContentDesc">Опис</string>
<string name="labelMenuEdit">Уреди</string>
<string name="labelMenuDelete">Избриши</string>
<string name="labelDeleteText">Ознака је избрисана</string>
<string name="labelDeleteErrorText">Нешто је пошло наопако, покушај поново</string>
<string name="noDataBranchesTab">Ниједна грана није пронађена</string>
<string name="creditsLogoDesign">Дизајн</string>
<!-- credits - this part does not need translation -->
<!-- credits - this part does not need translation -->
<string name="alertDialogTokenRevokedTitle">Грешка приликом ауторизације</string>
<string name="alertDialogTokenRevokedMessage">It seems that the Access Token is revoked OR your are not allowed to see these contents. In case of revoked Token, please logout and login again</string>
<string name="alertDialogTokenRevokedCopyNegativeButton">Откажи</string>
<string name="alertDialogTokenRevokedCopyPositiveButton">Одјави ме</string>
<string name="labelDeleteTitle">Избриши\u0020</string>
<string name="labelDeleteMessage">Do you really want to delete this label?</string>
<string name="labelDeletePositiveButton">У реду</string>
<string name="labelDeleteNegativeButton">Откажи</string>
<!-- org tabbed layout str -->
<string name="title_activity_org_detail">OrgDetailActivity</string>
<string name="orgTabRepos">Репозиторијуми</string>
<string name="orgTabTeams">Тимови</string>
<string name="orgTabMembers">Чланови</string>
<string name="orgCreateTeam">Нови тим</string>
<string name="noDataTeams">Ниједан тим није пронађен</string>
<string name="teamTitle">Назив тима</string>
<string name="teamDescription">Опис тима</string>
<string name="teamPermission">Право: %1$s</string>
<string name="noDataMembers">Ниједан члан није пронађен</string>
<string name="orgMember">Org members</string>
<string name="orgTeamMembers">Organization team members</string>
<!-- org tabbed layout str -->
<!-- create team -->
<string name="newTeamTitle">Назив тима</string>
<string name="newTeamDesc">Опис</string>
<string name="newTeamPermission">Право</string>
<string name="newTeamAccessControls">Access Controls</string>
<string name="newTeamPermissionRead">Members can view and clone team repositories</string>
<string name="newTeamPermissionWrite">Members can read and push to team repositories</string>
<string name="newTeamPermissionAdmin">Members can pull and push to team repositories and add collaborators to them</string>
<string name="teamNameEmpty">Унеси назив тима</string>
<string name="teamNameError">Team name should contain only alphanumeric, dash (-), underscore (_) and dot (.) characters</string>
<string name="teamPermissionEmpty">Please select permission</string>
<string name="teamDescError">Team description have illegal characters</string>
<string name="teamDescLimit">Team description have more than 100 characters</string>
<string name="teamCreated">Тим је успешно креиран</string>
<string name="teamCreatedError">Нешто је пошло наопако, покушај поново</string>
<!-- create team -->
<!-- edit comment -->
<string name="editCommentTitle">Уреди коментар</string>
<string name="editCommentButtonText">Уреди</string>
<string name="editCommentUpdatedText">Коментар је ажуриран</string>
<!-- edit comment -->
<!-- add collaborator -->
<string name="addCollaboratorTitle">Додај или уклони сарадника</string>
<string name="addCollaboratorSearchHint">Претражи кориснике</string>
<string name="addCollaboratorViewUserDesc">Корисничко име</string>
<string name="removeCollaboratorTitle">Уклони\u0020</string>
<string name="removeCollaboratorMessage">Do you want to remove this user from the repository?</string>
<string name="removeCollaboratorToastText">User removed from the repository.</string>
<string name="addCollaboratorToastText">User added to the repository.</string>
<!-- add collaborator -->
<!-- profile section -->
<string name="profileTabFollowers">Followers</string>
<string name="profileTabFollowing">Following</string>
<string name="profileCreateNewEmailAddress">Додај имејл-адресу</string>
<string name="profileEmailButton">Сачувај</string>
<string name="profileEmailTitle">Имејл-адреса</string>
<string name="emailAddedText">Имејл-адреса је успешно додата</string>
<string name="emailErrorEmpty">Имејл-адреса је обавезна</string>
<string name="emailErrorInvalid">Имејл-адреса није валидна</string>
<string name="emailErrorInUse">Неко већ користи ову имејл-адресу</string>
<string name="emailTypeText">Главна адреса</string>
<string name="profileTabEmails">Имејл</string>
<!-- profile section -->
<!-- single issue section -->
<string name="singleIssueEditLabels">Додај или уклони ознаку</string>
<string name="labelsUpdated">Ознаке су ажуриране</string>
<string name="closeIssue">Close Issue</string>
<string name="replyToIssue">Додај коментар</string>
<string name="editIssue">Edit Issue</string>
<string name="reOpenIssue">Reopen Issue</string>
<string name="issueStateClosed">Issue closed</string>
<string name="issueStateReopened">Issue reopened</string>
<string name="addRemoveAssignees2">Add Assignees</string>
<string name="addRemoveAssignees">Add / Remove Assignees</string>
<string name="assigneesUpdated">Assignees updated</string>
<!-- single issue section -->
<!-- multi select dialog -->
<string name="select_entry">Select Entries</string>
<string name="validation_text">Одабери бар једну опцију</string>
<string name="please_select_atleast">Please select at least </string>
<string name="you_can_only_select_upto">You can only select up to </string>
<string name="option"> option</string>
<string name="options"> options</string>
<string name="select_all">Select all</string>
<string name="de_select_all">Deselect all</string>
<!-- multi select dialog -->
<string name="repoMetaData">Основни подаци</string>
<!-- admin -->
<string name="adminCreateNewUser">Додај новог корисника</string>
<string name="adminUsers">Корисници</string>
<string name="userRoleAdmin">Администратор</string>
<!-- admin -->
<!-- create user -->
<string name="userFullNameText">Full Name</string>
<string name="userEmail">Имејл</string>
<string name="userUserName">Корисничко име</string>
<string name="userPassword">Лозинка</string>
<string name="userInvalidFullName">Invalid Full Name</string>
<string name="userInvalidUserName">Invalid Username</string>
<string name="userInvalidEmail">Invalid Email</string>
<string name="userCreatedText">Корисник је успешно додат</string>
<string name="userExistsError">Корисник већ постоји</string>
<!-- create user -->
<!-- sponsors -->
<!-- sponsors -->
<!-- edit issue -->
<string name="editIssueNavHeader">Edit Issue #%1$s</string>
<string name="editIssueSuccessMessage">Проблем је ажуриран</string>
<!-- edit issue -->
<!-- release -->
<string name="createRelease">New Release</string>
<string name="releaseTagNameText">Tag Name</string>
<string name="releaseTitleText">Наслов</string>
<string name="releaseContentText">Садржај</string>
<string name="releaseTypeText">Mark as Pre-Release</string>
<string name="releaseBranchText">Одабери грану</string>
<string name="releaseDraftText">Draft</string>
<string name="tagNameErrorEmpty">Tag name is empty</string>
<string name="titleErrorEmpty">Наслов је обавезан</string>
<string name="releaseCreatedText">New release created</string>
<!-- release -->
<string name="loginOTPError">Унеси OTP код</string>
<string name="loginOTPTypeError">OTP code should be numbers.</string>
<string name="loginOTP">OTP код (опционо)</string>
<string name="otpMessage">Enter the otp code if 2FA is enabled</string>
<string name="openWebRepo">Отвори у претраживачу</string>
<string name="repoStargazersInMenu">Stargazers</string>
<string name="repoWatchersInMenu">Watchers</string>
<string name="noDataStargazers">No stars found</string>
<string name="noDataWatchers">No watchers found</string>
<string name="starMember">Star</string>
<string name="watcherMember">Watcher</string>
<string name="commitLinkBranchesTab">Commit</string>
<string name="zipArchiveDownloadReleasesTab">Zip архива</string>
<string name="tarArchiveDownloadReleasesTab">Tar архива</string>
<!-- new file -->
<string name="newFileNameTintCopy">Назив фајла</string>
<string name="newFileBranchTintCopy">Назив нове гране</string>
<string name="newFileContentTintCopy">Садржај фајла</string>
<string name="newFileButtonCopy">Креирај нови фајл</string>
<string name="newFileNameHintMessage">with folder: app/test.md</string>
<string name="newFileMessageTintCopy">Опис комита</string>
<string name="newFileInvalidBranchName">Invalid branch name, may only contain &#8211;, a&#8211;z, 0&#8211;9</string>
<string name="newFileCommitMessageError">Commit message is too long</string>
<string name="newFileSuccessMessage">Фајл је креиран</string>
<string name="newFileOldBranches">Постојеће гране</string>
<string name="newFileRequiredFields">Fields like filename, content and commit message are required</string>
<string name="newFileCurrentBranchMessage">Selecting current branch will disable new branch</string>
<string name="newFileNewBranchMessage">e.g: new-branch</string>
<string name="newFileRequiredFieldNewBranchName">New branch name cannot be empty if current branch is not selected</string>
<string name="strFilter">Филтер</string>
<string name="copyIssueUrl">Копирај URL проблема</string>
<string name="copyIssueUrlToastMsg">URL проблема је копиран</string>
<string name="milestoneCompletion">%1$d\uFF05 completed</string>
<!-- files -->
<string name="noDataFilesTab">Ниједан фајл није пронађен</string>
<string name="filesDirNotSupportedYet">Directory browsing is not supported yet</string>
<string name="filesGenericError">Sorry this file cannot be viewed as API returned an error</string>
<string name="filesBreadcrumb">Root</string>
<!-- generic copy -->
<string name="okButton">У реду</string>
<string name="doneButton">Done</string>
<string name="cancelButton">Откажи</string>
<string name="genericError">Нешто је пошло наопако, покушај поново</string>
<string name="apiNotFound">This request needs higher Gitea version than the one installed. Please upgrade your instance to the latest version of Gitea.</string>
<string name="noDataFound">Ниједан податак није пронађен</string>
<string name="addButton">Додај</string>
<string name="removeButton">Уклони</string>
<string name="authorizeError">You are not authorized to perform this action.</string>
<string name="menuContentDesc">Мени</string>
<string name="menuEditText">Уреди</string>
<string name="menuDeleteText">Избриши</string>
<string name="modifiedText">edited</string>
<string name="saveButton">Сачувај</string>
<string name="nameText">Назив</string>
<string name="descriptionText">Опис</string>
<string name="websiteText">Веб-сајт</string>
<string name="locationText">Локација</string>
<string name="characters255Limit">Максимално 255 карактера</string>
<string name="emptyFields">Сва поља су обавезна</string>
<!-- generic copy -->
<string name="translateText">Преведи GitNex на платформи Crowdin</string>
<string name="exploreTextBoxHint">Истражи репозиторијуме</string>
<string name="starRepository">Додај у омиљене</string>
<string name="unStarRepository">Уклони из омиљених</string>
<string name="starRepositorySuccess">Репозиторијум је додат у омиљене</string>
<string name="unStarRepositorySuccess">Репозиторијум је уклоњен из омиљених</string>
<string name="watchRepository">Прати репозиторијум</string>
<string name="unWatchRepository">Престани да пратиш репозиторијум</string>
<string name="watchRepositorySuccess">Сад пратиш овај репозиторијум</string>
<string name="unWatchRepositorySuccess">Више не пратиш овај репозиторијум</string>
</resources>

View File

@ -0,0 +1,412 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources>
<!-- menu items -->
<string name="navMyRepos">我的仓库</string>
<string name="navStarredRepos">已点赞</string>
<string name="navRepos">仓库列表</string>
<string name="navProfile">个人信息</string>
<string name="navSettings">设置</string>
<string name="navOrgs">组织</string>
<string name="navAbout">关于</string>
<string name="navRate">评价 GitNex</string>
<string name="navLogout">退出</string>
<string name="navExplore">Explore</string>
<!-- menu items -->
<!-- page titles -->
<string name="pageTitleAbout">关于</string>
<string name="pageTitleHome">首页</string>
<string name="pageTitleMyRepos">我的仓库</string>
<string name="pageTitleRepositories">仓库列表</string>
<string name="pageTitleProfile">个人信息</string>
<string name="pageTitleNewRepo">创建仓库</string>
<string name="pageTitleOrganizations">组织</string>
<string name="pageTitleIssues">工单</string>
<string name="pageTitleSettings">设置</string>
<string name="pageTitleCreateOrganization">创建组织</string>
<string name="pageTitleCreateMilestone">创建里程碑</string>
<string name="pageTitleCreateNewIssue">创建工单</string>
<string name="pageTitleCreateLabel">创建标签</string>
<string name="pageTitleCredits">鸣谢</string>
<string name="pageTitleLabelUpdate">更新标签</string>
<string name="pageTitleSponsors">赞助商</string>
<string name="pageTitleStarredRepos">已点赞</string>
<string name="pageTitleCreateTeam">创建团队</string>
<string name="pageTitleAddEmail">添加电子邮件地址</string>
<string name="pageTitleNewFile">新建文件</string>
<string name="pageTitleExplore">Explore</string>
<!-- page titles -->
<string name="appVersion">版本\u0020:\u0020</string>
<string name="appBuild">构建编号 \u0020:\u0020</string>
<string name="repoName">演示仓库</string>
<string name="repoFullname">有组织的存储库</string>
<string name="repoDescription">演示描述</string>
<string name="noData">没有任何仓库</string>
<string name="orgName">演示组织</string>
<string name="orgDescription">演示描述</string>
<string name="noDataOrg">没有任何组织</string>
<string name="newCreateButtonCopy">创建</string>
<string name="newUpdateButtonCopy">更新</string>
<string name="newRepoTintCopy">仓库名称</string>
<string name="newRepoDescTintCopy">仓库描述</string>
<string name="newRepoPrivateCopy">私有</string>
<string name="newRepoDescInfo">最大 255 字符</string>
<string name="newRepoOwner">所有者</string>
<string name="newOrgTintCopy">组织名称</string>
<string name="newOrgDescTintCopy">组织描述</string>
<string name="newOrgDescInfo">最大 255 字符</string>
<string name="userName">用户名</string>
<string name="passWord">密码</string>
<string name="btnLogin">登录</string>
<string name="instanceUrl">实例URL</string>
<string name="navigation_drawer_open">打开隐藏式导览侧选单</string>
<string name="navigation_drawer_close">关闭导航栏</string>
<string name="logo">登录到 Gitea</string>
<string name="urlInfoTooltip">1- Choose the correct protocol(https or http). \n2- Enter Gitea url e.g: try.gitea.io. \n3- If you have enabled 2FA for your account, enter the code in the OTP Code field. \n4- For HTTP basic auth use USERNAME@DOMAIN.COM in the URL field.</string>
<string name="loginFailed">Wrong username/password</string>
<string name="protocolError">It is not recommended to use HTTP protocol unless you are testing on local network.</string>
<string name="malformedJson">Malformed JSON was received. Server response was not successful.</string>
<string name="emptyFieldURL">实例URL是必需的</string>
<string name="emptyFieldUsername">用户名必填</string>
<string name="emptyFieldPassword">密码为必填</string>
<string name="checkNetConnection">Cannot access network, please check your Internet connection</string>
<string name="repoNameErrorEmpty">仓库名称为空</string>
<string name="repoNameErrorInvalid">Repository name is not valid. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="repoDescError">Repository description exceeds the max 255 characters limit</string>
<string name="repoCreated">仓库创建成功</string>
<string name="repoCreatedError">Something went wrong, please try again</string>
<string name="repoExistsError">Repository of this name already exists under selected Owner</string>
<string name="orgNameErrorEmpty">组织名称为空</string>
<string name="orgNameErrorInvalid">Organization name is not valid, [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="orgDescError">Organization description exceeds the max 255 characters limit</string>
<string name="orgCreated">组织创建成功</string>
<string name="orgCreatedError">出错了,请重试</string>
<string name="orgExistsError">组织已存在</string>
<string name="processingText">处理中</string>
<string name="search">搜索</string>
<string name="wip">Work in progress</string>
<string name="close">关闭</string>
<string name="addNewContent">Add</string>
<string name="orgContentAvatar">Org</string>
<string name="repoContentAvatar">Repo</string>
<string name="privateAvatar">Pri</string>
<string name="removeContent">Remove</string>
<string name="genericApiStatusError">Instance has returned an error. Code\u0020</string>
<string name="title_activity_repo_detail">RepoDetailActivity</string>
<string name="tab_text_info">详情</string>
<string name="tab_text_files">Files</string>
<string name="tab_text_issues">Open Issues</string>
<string name="tabItemCloseIssues">Closed Issues</string>
<string name="tab_text_ml">里程碑</string>
<string name="tab_text_releases">版本发布</string>
<string name="tab_text_branches">分支</string>
<string name="tab_text_labels">标签</string>
<string name="action_settings">设置</string>
<string name="tab_text_collaborators">协作者</string>
<string name="noDataIssueTab">没有工单</string>
<string name="infoTabRepoName1">仓库</string>
<string name="infoTabRepoOwner1">所有者</string>
<string name="infoTabRepoDesc">Description</string>
<string name="infoTabRepoWebsite">Website</string>
<string name="infoTabRepoSize">Size</string>
<string name="infoTabRepoDefaultBranch">默认分支</string>
<string name="infoTabRepoSshUrl">SSH URL</string>
<string name="infoTabRepoCloneUrl">Clone URL</string>
<string name="infoTabRepoRepoUrl">Repo URL</string>
<string name="infoTabRepoForksCount">派生仓库</string>
<string name="infoTabRepoCreatedAt">Created</string>
<string name="infoTabRepoUpdatedAt">Last Updated</string>
<string name="timeAtText">at</string>
<string name="createdText">Opened\u0020</string>
<string name="dueDateText">Due Date</string>
<string name="issueStatusTextOpen">Status: open</string>
<string name="issueStatusOpen">open</string>
<string name="issueStatusTextClosed">Status: closed</string>
<string name="issueStatusClosed">closed</string>
<string name="issueCreator">Creator :\u0020</string>
<string name="issueAssigneesText">Assignees</string>
<string name="issueTypeIssue">Type: Issue</string>
<string name="issueTypePullRequest">Type: Pull Request</string>
<string name="issueCommenter">Commenter:\u0020</string>
<string name="issueMilestone">Milestone %1$s</string>
<string name="dueDate">Due %1$s</string>
<string name="createdTime">Opened %1$s</string>
<string name="assignedTo">Assigned to: %1$s</string>
<string name="commentButtonText">评论</string>
<string name="commentEmptyError">Please write your comment</string>
<string name="commentSuccess">Comment posted</string>
<string name="commentError">Something went wrong, please try again</string>
<string name="generalImgContentText">头像</string>
<string name="noDataMilestonesTab">No milestones found</string>
<string name="commitAuthor">Commit author: %1$s</string>
<string name="commitHash">Commit hash \n%1$s%2$s</string>
<string name="releaseTitle">Release Title</string>
<string name="releaseDescription">Release Description</string>
<string name="releaseDownloadText">下载</string>
<string name="releaseType">Release Type</string>
<string name="releaseZip">Release Zip</string>
<string name="releaseTar">Release Tar</string>
<string name="noDataReleasesTab">No releases found</string>
<string name="releaseTag">Tag: %1$s</string>
<string name="collaboratorsNameToast">Collaborator : %1$s</string>
<string name="noDataCollaboratorTab">没有协作者</string>
<string name="editText">编辑</string>
<string name="newMilestoneTitle">标题</string>
<string name="newMilestoneDescription">Description</string>
<string name="newMilestoneDueDate">Due Date</string>
<string name="milestoneNameErrorEmpty">里程碑标题为空</string>
<string name="milestoneNameErrorInvalid">Milestone title is not valid. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="milestoneDescError">Milestone description exceeds the max 255 characters limit</string>
<string name="milestoneCreated">Milestone created successfully</string>
<string name="milestoneCreatedError">Something went wrong, please try again</string>
<string name="milestoneDateEmpty">Please choose due date</string>
<string name="milestoneOpenIssues">Open issues : %1$d</string>
<string name="milestoneClosedIssues">Closed issues : %1$d</string>
<string name="newIssueSelectAssigneesListTitle">Select Assignees</string>
<string name="newIssueSelectLabelsListTitle">Select Labels</string>
<string name="newIssueDialogDone">Done</string>
<string name="newIssueDialogCancel">Cancel</string>
<string name="newIssueTitle">标题</string>
<string name="newIssueAssigneesListTitle">Assignees</string>
<string name="newIssueDescriptionTitle">Description</string>
<string name="newIssueDueDateTitle">Due Date</string>
<string name="newIssueMilestoneTitle">里程碑</string>
<string name="newIssueLabelsTitle">标签</string>
<string name="issueTitleEmpty">Issue title is empty</string>
<string name="issueDescriptionEmpty">Issue description is empty</string>
<string name="issueCreated">New issue created successfully</string>
<string name="issueCreatedError">Something went wrong, please try again</string>
<string name="noAssigneesFound">No collaborators found</string>
<string name="noLabelsFound">No labels found</string>
<!-- settings -->
<string name="settingsLanguageHeaderText">翻译</string>
<string name="settingsDateTimeHeaderText">Date &amp; Time</string>
<string name="settingsSave">设置已保存。</string>
<string name="settingsLanguageSelectorHeader">语言</string>
<string name="settingsLanguageSelectedHeaderDefault">英语</string>
<string name="settingsAppearanceHeader">外观</string>
<string name="settingsDateTimeHeaderDefault">Pretty</string>
<string name="settingsLanguageSelectorDialogTitle">选择语言</string>
<string name="settingsTimeSelectorDialogTitle">选择日期格式</string>
<string name="settingsIssueBadgeHeaderText">Issues Badge</string>
<string name="settingsHelpTranslateText">Help us translate GitNex to your language</string>
<string name="codeBlockHeaderText">Code Block Color</string>
<string name="settingsCodeBlockSelectorDialogTitle">Code Block Color Selector</string>
<string name="settingsHomeScreenHeaderText">主屏幕</string>
<string name="settingsHomeScreenSelectedText">我的仓库</string>
<string name="settingshomeScreenSelectorDialogTitle">Select Home Screen</string>
<!-- settings -->
<string name="noMoreData">No more data available</string>
<string name="createLabel">创建标签</string>
<string name="menuTitleText">Repo Menu</string>
<string name="labelName">标签名称</string>
<string name="labelColor">标签颜色</string>
<string name="labelEmptyError">Label name is empty</string>
<string name="labelNameError">Label name is not valid</string>
<string name="labelCreated">Label created.</string>
<string name="labelGeneralError">Something went wrong, please try again</string>
<string name="labelUpdated">Label updated.</string>
<string name="noDataLabelsTab">No labels found</string>
<string name="labelMenuContentDesc">Desc</string>
<string name="labelMenuEdit">编辑</string>
<string name="labelMenuDelete">删除</string>
<string name="labelDeleteText">标签已删除</string>
<string name="labelDeleteErrorText">Something went wrong, please try again</string>
<string name="noDataBranchesTab">No branches found</string>
<string name="creditsLogoDesign">Design</string>
<!-- credits - this part does not need translation -->
<!-- credits - this part does not need translation -->
<string name="alertDialogTokenRevokedTitle">Authorization Error</string>
<string name="alertDialogTokenRevokedMessage">It seems that the Access Token is revoked OR your are not allowed to see these contents. In case of revoked Token, please logout and login again</string>
<string name="alertDialogTokenRevokedCopyNegativeButton">取消</string>
<string name="alertDialogTokenRevokedCopyPositiveButton">退出</string>
<string name="labelDeleteTitle">Delete\u0020</string>
<string name="labelDeleteMessage">Do you really want to delete this label?</string>
<string name="labelDeletePositiveButton">确定</string>
<string name="labelDeleteNegativeButton">取消</string>
<!-- org tabbed layout str -->
<string name="title_activity_org_detail">OrgDetailActivity</string>
<string name="orgTabRepos">仓库列表</string>
<string name="orgTabTeams">团队</string>
<string name="orgTabMembers">成员</string>
<string name="orgCreateTeam">创建团队</string>
<string name="noDataTeams">No teams found</string>
<string name="teamTitle">团队名称</string>
<string name="teamDescription">团队描述</string>
<string name="teamPermission">Permission : %1$s</string>
<string name="noDataMembers">No members found</string>
<string name="orgMember">组织成员</string>
<string name="orgTeamMembers">Organization team members</string>
<!-- org tabbed layout str -->
<!-- create team -->
<string name="newTeamTitle">团队名称</string>
<string name="newTeamDesc">Description</string>
<string name="newTeamPermission">权限</string>
<string name="newTeamAccessControls">Access Controls</string>
<string name="newTeamPermissionRead">Members can view and clone team repositories</string>
<string name="newTeamPermissionWrite">Members can read and push to team repositories</string>
<string name="newTeamPermissionAdmin">Members can pull and push to team repositories and add collaborators to them</string>
<string name="teamNameEmpty">Please enter team name</string>
<string name="teamNameError">Team name should contain only alphanumeric, dash (-), underscore (_) and dot (.) characters</string>
<string name="teamPermissionEmpty">Please select permission</string>
<string name="teamDescError">Team description have illegal characters</string>
<string name="teamDescLimit">Team description have more than 100 characters</string>
<string name="teamCreated">Team created successfully</string>
<string name="teamCreatedError">Something went wrong, please try again</string>
<!-- create team -->
<!-- edit comment -->
<string name="editCommentTitle">Edit Comment</string>
<string name="editCommentButtonText">Edit</string>
<string name="editCommentUpdatedText">Comment updated</string>
<!-- edit comment -->
<!-- add collaborator -->
<string name="addCollaboratorTitle">Add / Remove Collaborator</string>
<string name="addCollaboratorSearchHint">Search users</string>
<string name="addCollaboratorViewUserDesc">Username</string>
<string name="removeCollaboratorTitle">Remove\u0020</string>
<string name="removeCollaboratorMessage">Do you want to remove this user from the repository?</string>
<string name="removeCollaboratorToastText">User removed from the repository.</string>
<string name="addCollaboratorToastText">User added to the repository.</string>
<!-- add collaborator -->
<!-- profile section -->
<string name="profileTabFollowers">Followers</string>
<string name="profileTabFollowing">Following</string>
<string name="profileCreateNewEmailAddress">Add Email Address</string>
<string name="profileEmailButton">Save</string>
<string name="profileEmailTitle">Email Address</string>
<string name="emailAddedText">New email added successfully.</string>
<string name="emailErrorEmpty">Email address is empty.</string>
<string name="emailErrorInvalid">Email address is not valid</string>
<string name="emailErrorInUse">Email address is already in use</string>
<string name="emailTypeText">Primary</string>
<string name="profileTabEmails">电子邮件</string>
<!-- profile section -->
<!-- single issue section -->
<string name="singleIssueEditLabels">添加/删除标签</string>
<string name="labelsUpdated">Labels updated</string>
<string name="closeIssue">Close Issue</string>
<string name="replyToIssue">Add Comment</string>
<string name="editIssue">Edit Issue</string>
<string name="reOpenIssue">重新打开工单</string>
<string name="issueStateClosed">已关闭工单</string>
<string name="issueStateReopened">Issue reopened</string>
<string name="addRemoveAssignees2">Add Assignees</string>
<string name="addRemoveAssignees">Add / Remove Assignees</string>
<string name="assigneesUpdated">Assignees updated</string>
<!-- single issue section -->
<!-- multi select dialog -->
<string name="select_entry">Select Entries</string>
<string name="validation_text">Please select at least one option</string>
<string name="please_select_atleast">Please select at least </string>
<string name="you_can_only_select_upto">You can only select up to </string>
<string name="option"> option</string>
<string name="options"> options</string>
<string name="select_all">全选</string>
<string name="de_select_all">反选</string>
<!-- multi select dialog -->
<string name="repoMetaData">Repository Meta</string>
<!-- admin -->
<string name="adminCreateNewUser">Add New User</string>
<string name="adminUsers">Users</string>
<string name="userRoleAdmin">Admin</string>
<!-- admin -->
<!-- create user -->
<string name="userFullNameText">Full Name</string>
<string name="userEmail">Email</string>
<string name="userUserName">Username</string>
<string name="userPassword">Password</string>
<string name="userInvalidFullName">Invalid Full Name</string>
<string name="userInvalidUserName">无效的用户名</string>
<string name="userInvalidEmail">无效的电子邮件</string>
<string name="userCreatedText">New user added successfully</string>
<string name="userExistsError">User already exists</string>
<!-- create user -->
<!-- sponsors -->
<!-- sponsors -->
<!-- edit issue -->
<string name="editIssueNavHeader">Edit Issue #%1$s</string>
<string name="editIssueSuccessMessage">Issue updated.</string>
<!-- edit issue -->
<!-- release -->
<string name="createRelease">发布新版</string>
<string name="releaseTagNameText">标签名称</string>
<string name="releaseTitleText">标题</string>
<string name="releaseContentText">内容</string>
<string name="releaseTypeText">Mark as Pre-Release</string>
<string name="releaseBranchText">Select Branch</string>
<string name="releaseDraftText">草稿</string>
<string name="tagNameErrorEmpty">Tag name is empty</string>
<string name="titleErrorEmpty">标题为空</string>
<string name="releaseCreatedText">New release created</string>
<!-- release -->
<string name="loginOTPError">Enter OTP code</string>
<string name="loginOTPTypeError">OTP code should be numbers.</string>
<string name="loginOTP">OTP Code (Optional)</string>
<string name="otpMessage">Enter the otp code if 2FA is enabled</string>
<string name="openWebRepo">在浏览器中打开</string>
<string name="repoStargazersInMenu">Stargazers</string>
<string name="repoWatchersInMenu">Watchers</string>
<string name="noDataStargazers">No stars found</string>
<string name="noDataWatchers">No watchers found</string>
<string name="starMember">Star</string>
<string name="watcherMember">Watcher</string>
<string name="commitLinkBranchesTab">提交</string>
<string name="zipArchiveDownloadReleasesTab">Zip Archive</string>
<string name="tarArchiveDownloadReleasesTab">Tar Archive</string>
<!-- new file -->
<string name="newFileNameTintCopy">File Name</string>
<string name="newFileBranchTintCopy">新分支名称</string>
<string name="newFileContentTintCopy">File Content</string>
<string name="newFileButtonCopy">Create New File</string>
<string name="newFileNameHintMessage">with folder: app/test.md</string>
<string name="newFileMessageTintCopy">Commit Message</string>
<string name="newFileInvalidBranchName">Invalid branch name, may only contain &#8211;, a&#8211;z, 0&#8211;9</string>
<string name="newFileCommitMessageError">Commit message is too long</string>
<string name="newFileSuccessMessage">New file created</string>
<string name="newFileOldBranches">Current Branches</string>
<string name="newFileRequiredFields">Fields like filename, content and commit message are required</string>
<string name="newFileCurrentBranchMessage">Selecting current branch will disable new branch</string>
<string name="newFileNewBranchMessage">e.g: new-branch</string>
<string name="newFileRequiredFieldNewBranchName">New branch name cannot be empty if current branch is not selected</string>
<string name="strFilter">Filter</string>
<string name="copyIssueUrl">Copy Issue URL</string>
<string name="copyIssueUrlToastMsg">Issue URL copied to clipboard</string>
<string name="milestoneCompletion">%1$d\uFF05 completed</string>
<!-- files -->
<string name="noDataFilesTab">No files found</string>
<string name="filesDirNotSupportedYet">Directory browsing is not supported yet</string>
<string name="filesGenericError">Sorry this file cannot be viewed as API returned an error</string>
<string name="filesBreadcrumb">Root</string>
<!-- generic copy -->
<string name="okButton">OK</string>
<string name="doneButton">Done</string>
<string name="cancelButton">Cancel</string>
<string name="genericError">Something went wrong, please try again</string>
<string name="apiNotFound">This request needs higher Gitea version than the one installed. Please upgrade your instance to the latest version of Gitea.</string>
<string name="noDataFound">No data found</string>
<string name="addButton">Add</string>
<string name="removeButton">Remove</string>
<string name="authorizeError">You are not authorized to perform this action.</string>
<string name="menuContentDesc">Menu</string>
<string name="menuEditText">Edit</string>
<string name="menuDeleteText">删除</string>
<string name="modifiedText">edited</string>
<string name="saveButton">Save</string>
<string name="nameText">Name</string>
<string name="descriptionText">Description</string>
<string name="websiteText">Website</string>
<string name="locationText">Location</string>
<string name="characters255Limit">最大 255 字符</string>
<string name="emptyFields">所有字段都是必填项</string>
<!-- generic copy -->
<string name="translateText">到 Crowdin 翻译</string>
<string name="exploreTextBoxHint">Explore repositories</string>
<string name="starRepository">Star Repository</string>
<string name="unStarRepository">Unstar Repository</string>
<string name="starRepositorySuccess">Repository added to starred list</string>
<string name="unStarRepositorySuccess">Repository removed from starred list</string>
<string name="watchRepository">Watch Repository</string>
<string name="unWatchRepository">Unwatch Repository</string>
<string name="watchRepositorySuccess">Repository added to watch list</string>
<string name="unWatchRepositorySuccess">Repository removed from watch list</string>
</resources>

View File

@ -1,12 +1,12 @@
<resources>
<!-- These strings does not need translations -->
<string name="app_name" translatable="false">GitNex</string>
<string name="appAuthor" translatable="false">Developer : M M Arif</string>
<string name="appEmail" translatable="false">gitnex@gitnex.com</string>
<string name="appRepo" translatable="false">Source code</string>
<string name="appRepoLink" translatable="false">https://gitea.com/mmarif/GitNex</string>
<string name="appRepoIssuesLink" translatable="false">https://gitea.com/mmarif/GitNex/issues</string>
<string name="appRepoContributingLink" translatable="false">https://gitea.com/mmarif/GitNex/src/branch/master/CONTRIBUTING.md</string>
<string name="appRepoLink" translatable="false">https://gitea.com/gitnex/GitNex</string>
<string name="appRepoIssuesLink" translatable="false">https://gitea.com/gitnex/GitNex/issues</string>
<string name="appRepoContributingLink" translatable="false">https://gitea.com/gitnex/GitNex/src/branch/master/CONTRIBUTING.md</string>
<string name="appWebsite" translatable="false">Website</string>
<string name="appWebsiteLink" translatable="false">https://gitnex.com/</string>
<string name="commitPage" translatable="false">Your Gitea version\n</string>
@ -14,13 +14,11 @@
<string name="supportLinkPatreon" translatable="false">https://www.patreon.com/mmarif</string>
<string name="appVerBuild" translatable="false">%1$s / build %2$d</string>
<string name="appDesc" translatable="false">GitNex is a free, open-source Android client for Git repository management tool Gitea. GitNex is Licensed under GPLv3.\n\nThanks to all the contributors and sponsors for your generous work and donations.</string>
<!-- These strings does not need translations -->
<string name="crowdInLink" translatable="false">https://crowdin.com/project/gitnex</string>
<!-- links text -->
<string name="appRepoIssuesText" translatable="false">Report issues at Gitea</string>
<string name="supportText" translatable="false">Support the App on Liberapay</string>
<string name="supportTextPatreon" translatable="false">Become a Patreon</string>
<!-- links text -->
<!-- menu items -->
<string name="navMyRepos">My Repositories</string>
@ -32,6 +30,7 @@
<string name="navAbout">About</string>
<string name="navRate">Rate GitNex</string>
<string name="navLogout">Logout</string>
<string name="navExplore">Explore</string>
<!-- menu items -->
<!-- page titles -->
@ -55,6 +54,7 @@
<string name="pageTitleCreateTeam">New Team</string>
<string name="pageTitleAddEmail">Add Email Address</string>
<string name="pageTitleNewFile">New File</string>
<string name="pageTitleExplore">Explore</string>
<!-- page titles -->
<string name="appVersion">Version\u0020:\u0020</string>
@ -91,7 +91,7 @@
<string name="logo">Login to Gitea</string>
<string name="urlInfoTooltip">1- Choose the correct protocol(https or http). \n2- Enter Gitea url e.g: try.gitea.io. \n3- If you have enabled 2FA for your account, enter the code in the OTP Code field. \n4- For HTTP basic auth use USERNAME@DOMAIN.COM in the URL field.</string>
<string name="loginFailed">Wrong username/password</string>
<string name="protocolDelimiter">://</string>
<string name="protocolDelimiter" translatable="false">://</string>
<string name="protocolError">It is not recommended to use HTTP protocol unless you are testing on local network.</string>
<string name="malformedJson">Malformed JSON was received. Server response was not successful.</string>
<string name="emptyFieldURL">Instance URL is required</string>
@ -123,14 +123,15 @@
<string name="orgContentAvatar">Org</string>
<string name="repoContentAvatar">Repo</string>
<string name="privateAvatar">Pri</string>
<string name="repoStars">12345</string>
<string name="repoWatchers">98324</string>
<string name="repoIssues">54321</string>
<string name="repoStars" translatable="false">12345</string>
<string name="repoWatchers" translatable="false">98324</string>
<string name="repoIssues" translatable="false">54321</string>
<string name="removeContent">Remove</string>
<string name="genericApiStatusError">Instance has returned an error. Code\u0020</string>
<string name="title_activity_repo_detail">RepoDetailActivity</string>
<string name="tab_text_info">Details</string>
<string name="tab_text_files">Files</string>
<string name="tab_text_issues">Open Issues</string>
<string name="tabItemCloseIssues">Closed Issues</string>
<string name="tab_text_ml">Milestones</string>
@ -154,13 +155,13 @@
<string name="infoTabRepoForksCount">Forks</string>
<string name="infoTabRepoCreatedAt">Created</string>
<string name="infoTabRepoUpdatedAt">Last Updated</string>
<string name="infoTabRepoDummyTime">2018&#8211;10&#8211;30 08:25:25</string>
<string name="infoTabRepoBlank">&#8230;</string>
<string name="infoTabRepoZero">0</string>
<string name="infoTabRepoDefaultBranchText">master</string>
<string name="infoTabRepoDummyTime" translatable="false">2018&#8211;10&#8211;30 08:25:25</string>
<string name="infoTabRepoBlank" translatable="false">&#8230;</string>
<string name="infoTabRepoZero" translatable="false">0</string>
<string name="infoTabRepoDefaultBranchText" translatable="false">master</string>
<string name="timeAtText">at</string>
<string name="hash">#</string>
<string name="hash" translatable="false">#</string>
<string name="createdText">Opened\u0020</string>
<string name="dueDateText">Due Date</string>
<string name="issueStatusTextOpen">Status: open</string>
@ -172,7 +173,7 @@
<string name="issueTypeIssue">Type: Issue</string>
<string name="issueTypePullRequest">Type: Pull Request</string>
<string name="issueCommenter">Commenter:\u0020</string>
<string name="issueTitleWithId">#%1$d %2$s</string>
<string name="issueTitleWithId" translatable="false">#%1$d %2$s</string>
<string name="issueMilestone">Milestone %1$s</string>
<string name="dueDate">Due %1$s</string>
<string name="createdTime">Opened %1$s</string>
@ -183,7 +184,7 @@
<string name="commentError">Something went wrong, please try again</string>
<string name="generalImgContentText">Avatar</string>
<string name="generalPageTitle">GitNex</string>
<string name="generalPageTitle" translatable="false">GitNex</string>
<string name="noDataMilestonesTab">No milestones found</string>
@ -209,7 +210,7 @@
<string name="newMilestoneTitle">Title</string>
<string name="newMilestoneDescription">Description</string>
<string name="newMilestoneDueDate">Due Date</string>
<string name="setDueDate">%1$d-%2$d-%3$d</string>
<string name="setDueDate" translatable="false">%1$d-%2$d-%3$d</string>
<string name="milestoneNameErrorEmpty">Milestone title is empty</string>
<string name="milestoneNameErrorInvalid">Milestone title is not valid. [a&#8211;z A&#8211;Z 0&#8211;9 &#8211; _]</string>
<string name="milestoneDescError">Milestone description exceeds the max 255 characters limit</string>
@ -229,8 +230,8 @@
<string name="newIssueDueDateTitle">Due Date</string>
<string name="newIssueMilestoneTitle">Milestone</string>
<string name="newIssueLabelsTitle">Labels</string>
<string name="spinnerMilestoneText">%1$s [%2$s]</string>
<string name="dialogAssignessText">%1$s - @%2$s</string>
<string name="spinnerMilestoneText" translatable="false">%1$s [%2$s]</string>
<string name="dialogAssignessText" translatable="false">%1$s - @%2$s</string>
<string name="issueTitleEmpty">Issue title is empty</string>
<string name="issueDescriptionEmpty">Issue description is empty</string>
<string name="issueCreated">New issue created successfully</string>
@ -258,16 +259,16 @@
<string name="settingshomeScreenSelectorDialogTitle">Select Home Screen</string>
<!-- settings -->
<string name="noMoreData">No more data available.</string>
<string name="noMoreData">No more data available</string>
<string name="createLabel">New Label</string>
<string name="menuTitleText">Repo Menu</string>
<string name="labelName">Label Name</string>
<string name="labelColor">Label Color</string>
<string name="labelEmptyError">Label name is empty.</string>
<string name="labelNameError">Label name is not valid.</string>
<string name="labelEmptyError">Label name is empty</string>
<string name="labelNameError">Label name is not valid</string>
<string name="labelCreated">Label created.</string>
<string name="labelGeneralError">Something went wrong, please try again.</string>
<string name="labelGeneralError">Something went wrong, please try again</string>
<string name="labelUpdated">Label updated.</string>
<string name="noDataLabelsTab">No labels found</string>
@ -286,7 +287,7 @@
<!-- credits - this part does not need translation -->
<string name="alertDialogTokenRevokedTitle">Authorization Error</string>
<string name="alertDialogTokenRevokedMessage">It seems that the Access Token is revoked OR your are not allowed to see these contents. In case of revoked Token, please logout and login again.</string>
<string name="alertDialogTokenRevokedMessage">It seems that the Access Token is revoked OR your are not allowed to see these contents. In case of revoked Token, please logout and login again</string>
<string name="alertDialogTokenRevokedCopyNegativeButton">Cancel</string>
<string name="alertDialogTokenRevokedCopyPositiveButton">Logout</string>
<string name="labelDeleteTitle">Delete\u0020</string>
@ -314,18 +315,18 @@
<string name="newTeamDesc">Description</string>
<string name="newTeamPermission">Permission</string>
<string name="newTeamAccessControls">Access Controls</string>
<string name="newTeamPermissionRead">Members can view and clone team repositories.</string>
<string name="newTeamPermissionWrite">Members can read and push to team repositories.</string>
<string name="newTeamPermissionAdmin">Members can pull and push to team repositories and add collaborators to them.</string>
<string name="newTeamPermissionRead">Members can view and clone team repositories</string>
<string name="newTeamPermissionWrite">Members can read and push to team repositories</string>
<string name="newTeamPermissionAdmin">Members can pull and push to team repositories and add collaborators to them</string>
<string name="newTeamPermissionValues" translatable="false">%1$s%2$s,\u0020</string>
<string name="newTeamPermissionValuesFinal" translatable="false">%1$s%2$s,\u0020</string>
<string name="teamNameEmpty">Please enter team name.</string>
<string name="teamNameError">Team name should contain only alphanumeric, dash (-), underscore (_) and dot (.) characters.</string>
<string name="teamPermissionEmpty">Please select permission.</string>
<string name="teamDescError">Team description have illegal characters.</string>
<string name="teamDescLimit">Team description have more than 100 characters.</string>
<string name="teamCreated">Team created successfully.</string>
<string name="teamCreatedError">Something went wrong, please try again.</string>
<string name="teamNameEmpty">Please enter team name</string>
<string name="teamNameError">Team name should contain only alphanumeric, dash (-), underscore (_) and dot (.) characters</string>
<string name="teamPermissionEmpty">Please select permission</string>
<string name="teamDescError">Team description have illegal characters</string>
<string name="teamDescLimit">Team description have more than 100 characters</string>
<string name="teamCreated">Team created successfully</string>
<string name="teamCreatedError">Something went wrong, please try again</string>
<!-- create team -->
<!-- edit comment -->
@ -352,8 +353,8 @@
<string name="profileEmailTitle">Email Address</string>
<string name="emailAddedText">New email added successfully.</string>
<string name="emailErrorEmpty">Email address is empty.</string>
<string name="emailErrorInvalid">Email address is not valid.</string>
<string name="emailErrorInUse">Email address is already in use.</string>
<string name="emailErrorInvalid">Email address is not valid</string>
<string name="emailErrorInUse">Email address is already in use</string>
<string name="emailTypeText">Primary</string>
<string name="profileTabEmails">Emails</string>
<string name="usernameWithAt" translatable="false">\u0040\u0020%1$s</string>
@ -469,6 +470,12 @@
<string name="milestoneCompletion">%1$d\uFF05 completed</string>
<!-- files -->
<string name="noDataFilesTab">No files found</string>
<string name="filesDirNotSupportedYet">Directory browsing is not supported yet</string>
<string name="filesGenericError">Sorry this file cannot be viewed as API returned an error</string>
<string name="filesBreadcrumb">Root</string>
<!-- generic copy -->
<string name="okButton">OK</string>
<string name="doneButton">Done</string>
@ -495,4 +502,16 @@
<string name="emptyFields">All fields are required</string>
<!-- generic copy -->
<string name="translateText">Translate GitNex with Crowdin</string>
<string name="exploreTextBoxHint">Explore repositories</string>
<string name="starRepository">Star Repository</string>
<string name="unStarRepository">Unstar Repository</string>
<string name="starRepositorySuccess">Repository added to starred list</string>
<string name="unStarRepositorySuccess">Repository removed from starred list</string>
<string name="watchRepository">Watch Repository</string>
<string name="unWatchRepository">Unwatch Repository</string>
<string name="watchRepositorySuccess">Repository added to watch list</string>
<string name="unWatchRepositorySuccess">Repository removed from watch list</string>
<string name="filesBreadcrumbRoot" translatable="false">Root</string>
</resources>

View File

@ -47,5 +47,13 @@
<item name="android:textSize">16sp</item>
</style>
<style name="lineDividerHorizontal">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">1dp</item>
<item name="android:background">@color/divider</item>
<item name="android:layout_marginStart">64dp</item>
<item name="android:layout_marginTop">10dp</item>
<item name="android:layout_marginBottom">10dp</item>
</style>
</resources>

View File

@ -7,7 +7,7 @@ buildscript {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'
classpath 'com.android.tools.build:gradle:3.5.1'
}
}

View File

@ -5,4 +5,4 @@
- Enhancement: Redesign Profile screen
- Enhancement: Added edited status for single issue and comments
Release notes: https://gitlab.com/mmarif4u/gitnex/releases
Release notes: https://gitea.com/gitnex/GitNex/releases

View File

@ -7,4 +7,4 @@
- Enhancement: Added edited status for single issue and comments
And many more, check the release notes.
https://gitlab.com/mmarif4u/gitnex/releases
https://gitea.com/gitnex/GitNex/releases

View File

@ -7,4 +7,4 @@
- Enhancement: New nav background image
Release Notes
https://gitlab.com/mmarif4u/gitnex/releases
https://gitea.com/gitnex/GitNex/releases

View File

@ -4,4 +4,4 @@
- Fixed: Layout fixes across the app
And many more, check the release notes.
https://gitlab.com/mmarif4u/gitnex/releases
https://gitea.com/gitnex/GitNex/releases

View File

@ -9,4 +9,4 @@
- Enhancement: New nav background image
For more, check the release notes.
https://gitlab.com/mmarif4u/gitnex/releases
https://gitea.com/gitnex/GitNex/releases

View File

@ -9,4 +9,4 @@
- Fixed: Crash when issues and info tabs are frequently switched
For more, check the release notes.
https://gitlab.com/mmarif4u/gitnex/releases
https://gitea.com/gitnex/GitNex/releases

View File

@ -10,4 +10,4 @@
- Enhancement: German and Russian translation updates
For more, check the release notes.
https://gitlab.com/mmarif4u/gitnex/releases
https://gitea.com/gitnex/GitNex/releases

View File

@ -7,4 +7,4 @@
- Fixed: Crash when issue badge is disabled
For more, check the release notes.
https://gitlab.com/mmarif4u/gitnex/releases
https://gitea.com/gitnex/GitNex/releases

View File

@ -4,4 +4,4 @@
- Fixed: Crash when empty password with OTP is used
For more, check the release notes.
https://gitea.com/mmarif/GitNex/releases
https://gitea.com/gitnex/GitNex/releases

View File

@ -11,4 +11,4 @@
- Fixed: Crash when tabs are moved quickly
- Fixed: Commit hash url in branches tab
For more, check the release notes.
For more, check the release notes.

View File

@ -13,4 +13,4 @@
- Bugfix: Open issues tab color scheme
For more, check the release notes.
https://gitea.com/mmarif/GitNex/releases
https://gitea.com/gitnex/GitNex/releases

View File

@ -3,4 +3,4 @@ Bugfix: Milestone progress bar fix
Bugfix: Create new issue enable/disable fix
For more, check the release notes.
https://gitea.com/mmarif/GitNex/releases
https://gitea.com/gitnex/GitNex/releases

View File

@ -1,4 +1,4 @@
Bugfix: crash when my repo, starred repos are accessed without repo avatar. old Gitea instances
For more, check the release notes.
https://gitea.com/mmarif/GitNex/releases
https://gitea.com/gitnex/GitNex/releases

View File

@ -10,4 +10,4 @@ Bugfix: another old Gitea instances API issue
- New: Added repository avatars
For more, check the release notes.
https://gitea.com/mmarif/GitNex/releases
https://gitea.com/gitnex/GitNex/releases

View File

@ -0,0 +1,13 @@
2.2.0
- New: Explore repositories
- New: Files and directory browser (Require Gitea 1.9)
- New: Basic file viewer
- New: Filter files/directories
- New: Star/unstar a repository
- New: Watch/unwatch a repository
- Improvement: Added Corwdin for translation
- Improvement: Bottomsheet scroll and line dividers
- Improvement: New languages support
For more, check the release notes.
https://gitea.com/gitnex/GitNex/releases

View File

@ -0,0 +1,16 @@
2.2.1
- Bug fix: Crash on empty repository
2.2.0
- New: Explore repositories
- New: Files and directory browser (Require Gitea 1.9)
- New: Basic file viewer
- New: Filter files/directories
- New: Star/unstar a repository
- New: Watch/unwatch a repository
- Improvement: Added Corwdin for translation
- Improvement: Bottomsheet scroll and line dividers
- Improvement: New languages support
For more, check the release notes.
https://gitea.com/gitnex/GitNex/releases

View File

@ -0,0 +1,19 @@
2.2.2
- Bug fix: My repositories when login via email
2.2.1
- Bug fix: Crash on empty repository
2.2.0
- New: Explore repositories
- New: Files and directory browser (Require Gitea 1.9)
- New: Basic file viewer
- New: Filter files/directories
- New: Star/unstar a repository
- New: Watch/unwatch a repository
- Improvement: Added Corwdin for translation
- Improvement: Bottomsheet scroll and line dividers
- Improvement: New languages support
For more, check the release notes.
https://gitea.com/gitnex/GitNex/releases

View File

@ -2,8 +2,11 @@ GitNex is a free, open-source Android client for Git repository management tool
# Features
- Create new files
- My Repositories
- File/Directory browser
- File viewer
- Create files
- Explore repositories
- My repositories
- Repositories list
- Organizations list
- Create new repository
@ -15,7 +18,7 @@ GitNex is a free, open-source Android client for Git repository management tool
- Issue comments
- Comment on issues
- Search issues in issues list
- Create new issue with multiple assignees, labels and add milestone, due date to it
- Create new issue with multiple assignee, labels and add milestone, due date to it
- Create label
- Edit / delete labels
- Repository information
@ -27,9 +30,15 @@ GitNex is a free, open-source Android client for Git repository management tool
- Markdown support
- Emoji support
- Settings : Pretty and Normal time format, language change
, issue badge
- Option to access local non-https installs
- Login/Logout
- Basic HTTP authentication support. Use USERNAME@YOUR-DOMAIN.COM in URL field
- 2FA OTP support. Check the Troubleshoot wiki page for usage
- Create a new user - Admin privilege required
- Closed issues list
- Edit issues
More features - https://gitea.com/mmarif/GitNex/wiki/Features
More features - https://gitea.com/gitnex/GitNex/wiki/Features
Source code: https://gitea.com/gitnex/GitNex
Developer: https://mastodon.social/@mmarif

Some files were not shown because too many files have changed in this diff Show More