Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
957bc76dbb | ||
|
|
1f5a28fb33 | ||
|
|
045c58ce66 | ||
|
|
e2dde7239f | ||
|
|
512ad93eea | ||
|
|
19759023a4 | ||
|
|
714d3399ce | ||
|
|
e1850e5282 | ||
|
|
a05c917b2c | ||
|
|
8f3a9c265c | ||
|
|
6f1a33b76e | ||
|
|
8f0451175f | ||
|
|
37a3a4f1c0 | ||
|
|
bd85746726 |
@@ -9,8 +9,8 @@ android {
|
||||
applicationId "org.joinmastodon.android"
|
||||
minSdk 23
|
||||
targetSdk 33
|
||||
versionCode 78
|
||||
versionName "2.2.2"
|
||||
versionCode 80
|
||||
versionName "2.2.4"
|
||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||
resConfigs "ar-rSA", "be-rBY", "bn-rBD", "bs-rBA", "ca-rES", "cs-rCZ", "da-rDK", "de-rDE", "el-rGR", "es-rES", "eu-rES", "fa-rIR", "fi-rFI", "fil-rPH", "fr-rFR", "ga-rIE", "gd-rGB", "gl-rES", "hi-rIN", "hr-rHR", "hu-rHU", "hy-rAM", "ig-rNG", "in-rID", "is-rIS", "it-rIT", "iw-rIL", "ja-rJP", "kab", "ko-rKR", "my-rMM", "nl-rNL", "no-rNO", "oc-rFR", "pl-rPL", "pt-rBR", "pt-rPT", "ro-rRO", "ru-rRU", "si-rLK", "sl-rSI", "sv-rSE", "th-rTH", "tr-rTR", "uk-rUA", "ur-rIN", "vi-rVN", "zh-rCN", "zh-rTW"
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ import android.app.Fragment;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.net.Uri;
|
||||
import android.os.BadParcelableException;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
@@ -36,6 +37,8 @@ import me.grishka.appkit.api.Callback;
|
||||
import me.grishka.appkit.api.ErrorResponse;
|
||||
|
||||
public class MainActivity extends FragmentStackActivity{
|
||||
private static final String TAG="MainActivity";
|
||||
|
||||
@Override
|
||||
protected void onCreate(@Nullable Bundle savedInstanceState){
|
||||
UiUtils.setUserPreferredTheme(this);
|
||||
@@ -193,8 +196,14 @@ public class MainActivity extends FragmentStackActivity{
|
||||
fragment.setArguments(args);
|
||||
showFragmentClearingBackStack(fragment);
|
||||
if(intent.getBooleanExtra("fromNotification", false) && intent.hasExtra("notification")){
|
||||
Notification notification=Parcels.unwrap(intent.getParcelableExtra("notification"));
|
||||
showFragmentForNotification(notification, session.getID());
|
||||
// Parcelables might not be compatible across app versions so this protects against possible crashes
|
||||
// when a notification was received, then the app was updated, and then the user opened the notification
|
||||
try{
|
||||
Notification notification=Parcels.unwrap(intent.getParcelableExtra("notification"));
|
||||
showFragmentForNotification(notification, session.getID());
|
||||
}catch(BadParcelableException x){
|
||||
Log.w(TAG, x);
|
||||
}
|
||||
}else if(intent.getBooleanExtra("compose", false)){
|
||||
showCompose();
|
||||
}else if(Intent.ACTION_VIEW.equals(intent.getAction())){
|
||||
|
||||
@@ -248,6 +248,7 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
||||
@Override
|
||||
public void photoViewerDismissed(){
|
||||
currentPhotoViewer=null;
|
||||
gridHolder.itemView.setHasTransientState(false);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -259,6 +260,7 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
||||
return gridHolder.getViewController(index);
|
||||
}
|
||||
});
|
||||
gridHolder.itemView.setHasTransientState(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -659,7 +661,7 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
||||
new NonMutualPreReplySheet(getActivity(), notAgain->{
|
||||
GlobalUserPreferences.optOutOfPreReplySheet(GlobalUserPreferences.PreReplySheetType.NON_MUTUAL, notAgain ? null : status.account, accountID);
|
||||
proceed.run();
|
||||
}, status.account).show();
|
||||
}, status.account, accountID).show();
|
||||
}else if(!GlobalUserPreferences.isOptedOutOfPreReplySheet(GlobalUserPreferences.PreReplySheetType.OLD_POST, null, null) &&
|
||||
status.createdAt.isBefore(Instant.now().minus(90, ChronoUnit.DAYS))){
|
||||
new OldPostPreReplySheet(getActivity(), notAgain->{
|
||||
|
||||
@@ -314,6 +314,8 @@ public class NotificationsListFragment extends BaseStatusListFragment<Notificati
|
||||
}
|
||||
|
||||
private void markAsRead(){
|
||||
if(data.isEmpty())
|
||||
return;
|
||||
String id=data.get(0).id;
|
||||
if(ObjectIdComparator.INSTANCE.compare(id, realUnreadMarker)>0){
|
||||
new SaveMarkers(null, id).exec(accountID);
|
||||
|
||||
@@ -1,18 +1,15 @@
|
||||
package org.joinmastodon.android.fragments.onboarding;
|
||||
|
||||
import android.app.ProgressDialog;
|
||||
import android.graphics.Typeface;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.LocaleList;
|
||||
import android.text.Editable;
|
||||
import android.text.Html;
|
||||
import android.text.SpannableString;
|
||||
import android.text.SpannableStringBuilder;
|
||||
import android.text.Spanned;
|
||||
import android.text.TextUtils;
|
||||
import android.text.TextWatcher;
|
||||
import android.text.style.TypefaceSpan;
|
||||
import android.text.style.URLSpan;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@@ -46,10 +43,13 @@ import org.jsoup.select.NodeVisitor;
|
||||
import org.parceler.Parcels;
|
||||
|
||||
import java.time.ZoneId;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
@@ -58,7 +58,6 @@ import me.grishka.appkit.api.APIRequest;
|
||||
import me.grishka.appkit.api.Callback;
|
||||
import me.grishka.appkit.api.ErrorResponse;
|
||||
import me.grishka.appkit.fragments.ToolbarFragment;
|
||||
import me.grishka.appkit.utils.V;
|
||||
import me.grishka.appkit.views.FragmentRootLinearLayout;
|
||||
|
||||
public class SignupFragment extends ToolbarFragment{
|
||||
@@ -79,6 +78,7 @@ public class SignupFragment extends ToolbarFragment{
|
||||
private ProgressDialog progressDialog;
|
||||
private HashSet<EditText> errorFields=new HashSet<>();
|
||||
private ElevationOnScrollListener onScrollListener;
|
||||
private Set<String> serverSupportedTimezones, serverSupportedLocales;
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState){
|
||||
@@ -87,6 +87,8 @@ public class SignupFragment extends ToolbarFragment{
|
||||
instance=Parcels.unwrap(getArguments().getParcelable("instance"));
|
||||
createAppAndGetToken();
|
||||
setTitle(R.string.signup_title);
|
||||
serverSupportedTimezones=Arrays.stream(getResources().getStringArray(R.array.server_supported_timezones)).collect(Collectors.toSet());
|
||||
serverSupportedLocales=Arrays.stream(getResources().getStringArray(R.array.server_supported_locales)).collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -190,7 +192,34 @@ public class SignupFragment extends ToolbarFragment{
|
||||
edit.setError(null);
|
||||
}
|
||||
errorFields.clear();
|
||||
new RegisterAccount(username, email, password.getText().toString(), getResources().getConfiguration().locale.getLanguage(), reason.getText().toString(), ZoneId.systemDefault().getId())
|
||||
String locale=null;
|
||||
String timezone=ZoneId.systemDefault().getId();
|
||||
|
||||
if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.N){
|
||||
LocaleList localeList=getResources().getConfiguration().getLocales();
|
||||
for(int i=0;i<localeList.size();i++){
|
||||
Locale l=localeList.get(i);
|
||||
if(serverSupportedLocales.contains(l.toLanguageTag())){
|
||||
locale=l.toLanguageTag();
|
||||
break;
|
||||
}else if(serverSupportedLocales.contains(l.getLanguage())){
|
||||
locale=l.getLanguage();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}else{
|
||||
Locale l=getResources().getConfiguration().locale;
|
||||
if(serverSupportedLocales.contains(l.toLanguageTag())){
|
||||
locale=l.toLanguageTag();
|
||||
}else if(serverSupportedLocales.contains(l.getLanguage())){
|
||||
locale=l.getLanguage();
|
||||
}
|
||||
}
|
||||
|
||||
if(!serverSupportedTimezones.contains(timezone))
|
||||
timezone=null;
|
||||
|
||||
new RegisterAccount(username, email, password.getText().toString(), locale, reason.getText().toString(), timezone)
|
||||
.setCallback(new Callback<>(){
|
||||
@Override
|
||||
public void onSuccess(Token result){
|
||||
|
||||
@@ -153,7 +153,7 @@ public class SettingsMainFragment extends BaseSettingsFragment<Void>{
|
||||
}
|
||||
|
||||
private void onManageAccountsClick(ListItem<?> item){
|
||||
new AccountSwitcherSheet(getActivity(), null).show();
|
||||
new AccountSwitcherSheet(getActivity(), null).setOnLoggedOutCallback(()->loggedOut=true).show();
|
||||
}
|
||||
|
||||
private void onLogOutClick(ListItem<?> item_){
|
||||
|
||||
@@ -60,6 +60,7 @@ public class AccountSwitcherSheet extends BottomSheet{
|
||||
private UsableRecyclerView list;
|
||||
private List<WrappedAccount> accounts;
|
||||
private ListImageLoaderWrapper imgLoader;
|
||||
private Runnable onLoggedOutCallback;
|
||||
|
||||
public AccountSwitcherSheet(@NonNull Activity activity, @Nullable HomeFragment fragment){
|
||||
super(activity);
|
||||
@@ -95,6 +96,11 @@ public class AccountSwitcherSheet extends BottomSheet{
|
||||
UiUtils.getThemeColor(activity, R.attr.colorM3Primary), 0.05f)), !UiUtils.isDarkTheme());
|
||||
}
|
||||
|
||||
public AccountSwitcherSheet setOnLoggedOutCallback(Runnable onLoggedOutCallback){
|
||||
this.onLoggedOutCallback=onLoggedOutCallback;
|
||||
return this;
|
||||
}
|
||||
|
||||
private void confirmLogOut(String accountID){
|
||||
AccountSession session=AccountSessionManager.getInstance().getAccount(accountID);
|
||||
new M3AlertDialogBuilder(activity)
|
||||
@@ -113,7 +119,10 @@ public class AccountSwitcherSheet extends BottomSheet{
|
||||
}
|
||||
|
||||
private void logOut(String accountID){
|
||||
String activeAccount=AccountSessionManager.getInstance().getLastActiveAccountID();
|
||||
AccountSessionManager.get(accountID).logOut(activity, ()->{
|
||||
if(accountID.equals(activeAccount) && onLoggedOutCallback!=null)
|
||||
onLoggedOutCallback.run();
|
||||
dismiss();
|
||||
((MainActivity)activity).restartHomeFragment();
|
||||
});
|
||||
@@ -133,6 +142,8 @@ public class AccountSwitcherSheet extends BottomSheet{
|
||||
AccountSessionManager.getInstance().removeAccount(session.getID());
|
||||
sessions.remove(session);
|
||||
if(sessions.isEmpty()){
|
||||
if(onLoggedOutCallback!=null)
|
||||
onLoggedOutCallback.run();
|
||||
progress.dismiss();
|
||||
Nav.goClearingStack(activity, SplashFragment.class, null);
|
||||
dismiss();
|
||||
@@ -144,6 +155,8 @@ public class AccountSwitcherSheet extends BottomSheet{
|
||||
AccountSessionManager.getInstance().removeAccount(session.getID());
|
||||
sessions.remove(session);
|
||||
if(sessions.isEmpty()){
|
||||
if(onLoggedOutCallback!=null)
|
||||
onLoggedOutCallback.run();
|
||||
progress.dismiss();
|
||||
Nav.goClearingStack(activity, SplashFragment.class, null);
|
||||
dismiss();
|
||||
|
||||
@@ -12,6 +12,7 @@ import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import org.joinmastodon.android.R;
|
||||
import org.joinmastodon.android.api.session.AccountSessionManager;
|
||||
import org.joinmastodon.android.model.Account;
|
||||
import org.joinmastodon.android.ui.text.HtmlParser;
|
||||
import org.joinmastodon.android.ui.utils.UiUtils;
|
||||
@@ -25,7 +26,7 @@ public class NonMutualPreReplySheet extends PreReplySheet{
|
||||
private boolean fullBioShown=false;
|
||||
|
||||
@SuppressLint("DefaultLocale")
|
||||
public NonMutualPreReplySheet(@NonNull Context context, ResultListener resultListener, Account account){
|
||||
public NonMutualPreReplySheet(@NonNull Context context, ResultListener resultListener, Account account, String accountID){
|
||||
super(context, resultListener);
|
||||
icon.setImageResource(R.drawable.ic_waving_hand_24px);
|
||||
title.setText(R.string.non_mutual_sheet_title);
|
||||
@@ -55,11 +56,16 @@ public class NonMutualPreReplySheet extends PreReplySheet{
|
||||
name.setEllipsize(TextUtils.TruncateAt.END);
|
||||
name.setTextAppearance(R.style.m3_title_medium);
|
||||
name.setTextColor(UiUtils.getThemeColor(context, R.attr.colorM3OnSurface));
|
||||
name.setText(account.displayName);
|
||||
if(AccountSessionManager.get(accountID).getLocalPreferences().customEmojiInNames){
|
||||
name.setText(HtmlParser.parseCustomEmoji(account.displayName, account.emojis));
|
||||
UiUtils.loadCustomEmojiInTextView(name);
|
||||
}else{
|
||||
name.setText(account.displayName);
|
||||
}
|
||||
name.setGravity(Gravity.CENTER_VERTICAL | Gravity.START);
|
||||
nameAndFields.addView(name, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, V.dp(24)));
|
||||
if(!TextUtils.isEmpty(account.note)){
|
||||
String strippedBio=HtmlParser.stripAndRemoveInvisibleSpans(account.note);
|
||||
CharSequence strippedBio=HtmlParser.parseCustomEmoji(HtmlParser.stripAndRemoveInvisibleSpans(account.note), account.emojis);
|
||||
TextView bioShort=new TextView(context);
|
||||
bioShort.setTextAppearance(R.style.m3_body_medium);
|
||||
bioShort.setTextColor(UiUtils.getThemeColor(context, R.attr.colorM3Secondary));
|
||||
@@ -85,6 +91,8 @@ public class NonMutualPreReplySheet extends PreReplySheet{
|
||||
bioShort.setVisibility(View.VISIBLE);
|
||||
}
|
||||
});
|
||||
UiUtils.loadCustomEmojiInTextView(bioShort);
|
||||
UiUtils.loadCustomEmojiInTextView(bioFull);
|
||||
}else{
|
||||
TextView username=new TextView(context);
|
||||
username.setTextAppearance(R.style.m3_body_medium);
|
||||
|
||||
@@ -5,6 +5,7 @@ import android.graphics.drawable.ColorDrawable;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
@@ -13,6 +14,7 @@ import org.joinmastodon.android.R;
|
||||
import org.joinmastodon.android.ui.utils.UiUtils;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import me.grishka.appkit.utils.V;
|
||||
import me.grishka.appkit.views.BottomSheet;
|
||||
|
||||
public abstract class PreReplySheet extends BottomSheet{
|
||||
@@ -26,6 +28,8 @@ public abstract class PreReplySheet extends BottomSheet{
|
||||
|
||||
View content=context.getSystemService(LayoutInflater.class).inflate(R.layout.sheet_pre_reply, null);
|
||||
setContentView(content);
|
||||
FrameLayout.LayoutParams lp=(FrameLayout.LayoutParams) content.getLayoutParams();
|
||||
lp.topMargin=V.dp(72);
|
||||
|
||||
setNavigationBarBackground(new ColorDrawable(UiUtils.alphaBlendColors(UiUtils.getThemeColor(context, R.attr.colorM3Surface),
|
||||
UiUtils.getThemeColor(context, R.attr.colorM3Primary), 0.05f)), !UiUtils.isDarkTheme());
|
||||
|
||||
@@ -181,6 +181,8 @@ public class ToolbarDropdownMenuController{
|
||||
public void resizeOnNextFrame(){
|
||||
if(currentTransition!=null)
|
||||
currentTransition.cancel();
|
||||
if(windowView==null)
|
||||
return;
|
||||
int origBottom=menuContainer.getBottom();
|
||||
menuContainer.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener(){
|
||||
@Override
|
||||
|
||||
@@ -173,6 +173,7 @@ public class ReorderableLinearLayout extends LinearLayout implements CustomViewH
|
||||
else
|
||||
bottomSibling=null;
|
||||
dragListener.onSwapItems(prevIndex, index);
|
||||
final View draggedView=this.draggedView;
|
||||
draggedView.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener(){
|
||||
@Override
|
||||
public boolean onPreDraw(){
|
||||
|
||||
@@ -98,7 +98,7 @@ public class WrappingLinearLayout extends ViewGroup{
|
||||
xOffset+=mlp.leftMargin+mlp.rightMargin;
|
||||
}
|
||||
firstInRow=false;
|
||||
}else{
|
||||
}else if(currentRowIndex<rowHeights.size()-1){
|
||||
xOffset=rtl ? getPaddingRight() : getPaddingLeft();
|
||||
yOffset+=rowHeight+verticalGap;
|
||||
currentRowIndex++;
|
||||
|
||||
@@ -48,6 +48,7 @@
|
||||
android:layout_below="@id/title"
|
||||
android:layout_toEndOf="@id/icon"
|
||||
android:textAppearance="@style/m3_body_medium"
|
||||
android:textColor="?colorM3OnSurfaceVariant"
|
||||
tools:text="@string/non_mutual_sheet_text"/>
|
||||
|
||||
<LinearLayout
|
||||
|
||||
@@ -599,6 +599,7 @@
|
||||
<string name="list_no_members">まだメンバーがいません</string>
|
||||
<string name="list_find_users">追加したいユーザーを探す</string>
|
||||
<string name="reply_to_user">%s に返信</string>
|
||||
<string name="posted_at">%s に投稿しました</string>
|
||||
<string name="non_mutual_sheet_title">新しい関係を始めよう!</string>
|
||||
<string name="non_mutual_sheet_text">相互フォローでない誰かに返信しようとしているようです。素晴らしい第一印象を与えましょう。</string>
|
||||
<string name="got_it">了解</string>
|
||||
|
||||
@@ -159,17 +159,17 @@
|
||||
<string name="signup_title">Hesap oluştur</string>
|
||||
<string name="display_name">Ad</string>
|
||||
<string name="username">Kullanıcı adı</string>
|
||||
<string name="email">Eposta</string>
|
||||
<string name="email">E-Posta</string>
|
||||
<string name="password">Parola</string>
|
||||
<string name="confirm_password">Parolayı doğrula</string>
|
||||
<string name="password_note">Daha güçlü parolalar için parolanıza büyük harfler, özel karakterler ve sayılar ekleyin.</string>
|
||||
<string name="category_general">Genel</string>
|
||||
<string name="confirm_email_title">E-posta gelen kutunuzu kontrol edin</string>
|
||||
<string name="confirm_email_title">E-Posta gelen kutunuzu kontrol edin</string>
|
||||
<!-- %s is the email address -->
|
||||
<string name="confirm_email_subtitle">%s adresini doğrulamak için size gönderdiğimiz bağlantıya dokunun. Hemen burada bekleyeceğiz.</string>
|
||||
<string name="confirm_email_didnt_get">Bağlantı gelmedi mi?</string>
|
||||
<string name="resend">Yeniden gönder</string>
|
||||
<string name="open_email_app">Eposta uygulamasını aç</string>
|
||||
<string name="open_email_app">E-Posta uygulamasını aç</string>
|
||||
<string name="resent_email">Onay epostası gönderildi</string>
|
||||
<string name="compose_hint">Aklınızdan geçenleri yazın veya yapıştırın</string>
|
||||
<string name="content_warning">İçerik uyarısı</string>
|
||||
@@ -181,12 +181,12 @@
|
||||
<string name="recent_searches">Son aramalar</string>
|
||||
<string name="skip">Atla</string>
|
||||
<string name="notification_type_follow">Yeni takipçiler</string>
|
||||
<string name="notification_type_favorite">Favoriler</string>
|
||||
<string name="notification_type_favorite">Gözdeler</string>
|
||||
<string name="notification_type_reblog">Yinelemeler</string>
|
||||
<string name="notification_type_mention">Bahsetmeler</string>
|
||||
<string name="notification_type_poll">Anketler</string>
|
||||
<string name="choose_account">Hesap seç</string>
|
||||
<string name="err_not_logged_in">Lütfen önce Mastodon\'da oturum açın</string>
|
||||
<string name="err_not_logged_in">Lütfen önce Mastodonda oturum açın</string>
|
||||
<plurals name="cant_add_more_than_x_attachments">
|
||||
<item quantity="one">%d adetten fazla medya ekleyemezsiniz</item>
|
||||
<item quantity="other">%d adetten fazla medya ekleyemezsiniz</item>
|
||||
@@ -245,10 +245,10 @@
|
||||
<string name="downloading">İndiriliyor…</string>
|
||||
<string name="no_app_to_handle_action">Bu eylemi gerçekleştirebilecek bir uygulama bulunmuyor</string>
|
||||
<string name="local_timeline">Yerel</string>
|
||||
<string name="trending_posts_info_banner">Bunlar, Mastodon\'da ilgi gören gönderilerdir.</string>
|
||||
<string name="trending_posts_info_banner">Bunlar, Mastodon\'da ilgi gören gönderiler.</string>
|
||||
<string name="trending_links_info_banner">Bunlar Mastodon\'da konuşulan haberler.</string>
|
||||
<!-- %s is the server domain -->
|
||||
<string name="local_timeline_info_banner">Bunlar, sunucunuzdaki (%s) tüm kullanıcıların gönderileridir.</string>
|
||||
<string name="local_timeline_info_banner">Bunlar, sunucunuzdaki (%s) tüm kullanıcıların gönderileri.</string>
|
||||
<string name="recommended_accounts_info_banner">Takip ettiğiniz hesaplara göre bu hesapları beğenebilirsiniz.</string>
|
||||
<string name="see_new_posts">Yeni gönderiler</string>
|
||||
<string name="load_missing_posts">Daha fazlası</string>
|
||||
@@ -620,10 +620,34 @@
|
||||
<string name="no_lists_title">Ev beslemenizi Listeler ile düzenleyin</string>
|
||||
<string name="no_lists_subtitle">Sizinki burada görüntülenecek</string>
|
||||
<string name="manage_accounts">Hesap ekleme veya değiştirme</string>
|
||||
<plurals name="x_posts_recently">
|
||||
<item quantity="one">%,d son zamanlardaki yayın</item>
|
||||
<item quantity="other">%,d yakın zamanda gönderilerim</item>
|
||||
</plurals>
|
||||
<string name="create_list">Liste oluştur</string>
|
||||
<string name="step_x_of_y">Step %1$d ile %2$d</string>
|
||||
<string name="create">Oluştur</string>
|
||||
<string name="manage_list_members">Liste üyelerini yönet</string>
|
||||
<string name="list_no_members">Henüz üye yok.</string>
|
||||
<string name="list_find_users">Eklenecek kullanıcıları bul</string>
|
||||
<string name="reply_to_user">Yanıtla %s</string>
|
||||
<string name="posted_at">%s tarafından gönderildi</string>
|
||||
<string name="non_mutual_sheet_title">Merhaba, yeni bağlantı!</string>
|
||||
<string name="non_mutual_sheet_text">Görünüşe göre henüz ortak bağlantınız olmayan birine yanıt vermek üzeresiniz. Harika bir ilk izlenim bırakınız.</string>
|
||||
<string name="got_it">Anladım</string>
|
||||
<string name="dont_remind_again">Bana tekrar hatırlatmayınız.</string>
|
||||
<!-- %s is a time interval ("5 months") -->
|
||||
<string name="old_post_sheet_title">Bu gönderi %s eski</string>
|
||||
<string name="old_post_sheet_text">Hâlâ yanıt verebilirsiniz, ancak konuyla ilgili olmayabilir.</string>
|
||||
<string name="more_than_two_years">2 yıldan fazla süredir</string>
|
||||
<string name="non_mutual_title1">Saygılı ve ilgili & plunuz</string>
|
||||
<string name="non_mutual_text1">Yanıtınızın nazik ve konuyla ilgili olduğundan emin olunuz.</string>
|
||||
<string name="non_mutual_title2">Nezaketle sarıl</string>
|
||||
<string name="non_mutual_text2">Olumlu bir yaklaşım her zaman takdir edilir.</string>
|
||||
<string name="non_mutual_title3">Açık olunuz</string>
|
||||
<string name="non_mutual_text3">Herkesin konuşma tarzı kendine özgüdür. Uyum sağlamaya hazır olunuz.</string>
|
||||
<string name="make_profile_discoverable">Profilimi keşfedilebilir hale getiriniz</string>
|
||||
<string name="discoverability">Keşfedebilirlik</string>
|
||||
<string name="discoverability_help">Mastodon\'da keşfedilebilirliği tercih ettiğinizde, gönderileriniz arama sonuçlarında ve trendlerde görünebilir.\n\nProfiliniz sizinle benzer ilgi alanlarına sahip kişilere önerilebilir.\n\nBirisi sizi isminizle ararsa, devre dışı bırakma işlemi profilinizi gizlemez.</string>
|
||||
<string name="app_version_copied">Sürüm numarası panoya kopyalandı</string>
|
||||
</resources>
|
||||
|
||||
@@ -105,7 +105,7 @@
|
||||
<string name="log_out">注销</string>
|
||||
<string name="add_account">添加账户</string>
|
||||
<string name="search_hint">搜索</string>
|
||||
<string name="hashtags">话题</string>
|
||||
<string name="hashtags">标签</string>
|
||||
<string name="news">新闻</string>
|
||||
<string name="for_you">推荐关注</string>
|
||||
<string name="all_notifications">全部</string>
|
||||
@@ -546,8 +546,26 @@
|
||||
<string name="settings_privacy">隐私与可达性</string>
|
||||
<string name="settings_discoverable">在发现算法中展示您的个人资料和嘟文</string>
|
||||
<string name="settings_indexable">将您的公开嘟文纳入搜索范围</string>
|
||||
<string name="error_playing_video">播放视频出错</string>
|
||||
<string name="timeline_following">主页</string>
|
||||
<string name="lists">列表</string>
|
||||
<string name="followed_hashtags">关注的标签</string>
|
||||
<string name="manage_hashtags">管理标签</string>
|
||||
<!-- Screen reader description for the menu on the home timeline screen -->
|
||||
<string name="dropdown_menu">下拉菜单</string>
|
||||
<string name="edit_list">编辑列表</string>
|
||||
<string name="list_members">列表成员</string>
|
||||
<!-- %s is the name of the list -->
|
||||
<string name="list_exclusive_subtitle">列表成员不显示在主页时间线上,以免重复看到嘟文</string>
|
||||
<string name="list_name">列表名</string>
|
||||
<string name="remove">移除</string>
|
||||
<!-- %s is a username -->
|
||||
<string name="confirm_remove_list_member">移除成员?</string>
|
||||
<string name="manage_accounts">管理账户</string>
|
||||
<string name="create_list">创建列表</string>
|
||||
<string name="create">创建</string>
|
||||
<string name="dont_remind_again">不再提醒</string>
|
||||
<!-- %s is a time interval ("5 months") -->
|
||||
<string name="non_mutual_title1">保持尊重 & 切题</string>
|
||||
<string name="non_mutual_text1">确保您的回复礼貌且切题。</string>
|
||||
</resources>
|
||||
|
||||
237
mastodon/src/main/res/values/signup_params.xml
Normal file
237
mastodon/src/main/res/values/signup_params.xml
Normal file
@@ -0,0 +1,237 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string-array name="server_supported_timezones" translatable="false">
|
||||
<item>Africa/Algiers</item>
|
||||
<item>Africa/Cairo</item>
|
||||
<item>Africa/Casablanca</item>
|
||||
<item>Africa/Harare</item>
|
||||
<item>Africa/Johannesburg</item>
|
||||
<item>Africa/Monrovia</item>
|
||||
<item>Africa/Nairobi</item>
|
||||
<item>America/Argentina/Buenos_Aires</item>
|
||||
<item>America/Bogota</item>
|
||||
<item>America/Caracas</item>
|
||||
<item>America/Chicago</item>
|
||||
<item>America/Chihuahua</item>
|
||||
<item>America/Denver</item>
|
||||
<item>America/Godthab</item>
|
||||
<item>America/Guatemala</item>
|
||||
<item>America/Guyana</item>
|
||||
<item>America/Halifax</item>
|
||||
<item>America/Indiana/Indianapolis</item>
|
||||
<item>America/Juneau</item>
|
||||
<item>America/La_Paz</item>
|
||||
<item>America/Lima</item>
|
||||
<item>America/Los_Angeles</item>
|
||||
<item>America/Mazatlan</item>
|
||||
<item>America/Mexico_City</item>
|
||||
<item>America/Monterrey</item>
|
||||
<item>America/Montevideo</item>
|
||||
<item>America/New_York</item>
|
||||
<item>America/Phoenix</item>
|
||||
<item>America/Puerto_Rico</item>
|
||||
<item>America/Regina</item>
|
||||
<item>America/Santiago</item>
|
||||
<item>America/Sao_Paulo</item>
|
||||
<item>America/St_Johns</item>
|
||||
<item>America/Tijuana</item>
|
||||
<item>Asia/Almaty</item>
|
||||
<item>Asia/Baghdad</item>
|
||||
<item>Asia/Baku</item>
|
||||
<item>Asia/Bangkok</item>
|
||||
<item>Asia/Chongqing</item>
|
||||
<item>Asia/Colombo</item>
|
||||
<item>Asia/Dhaka</item>
|
||||
<item>Asia/Hong_Kong</item>
|
||||
<item>Asia/Irkutsk</item>
|
||||
<item>Asia/Jakarta</item>
|
||||
<item>Asia/Jerusalem</item>
|
||||
<item>Asia/Kabul</item>
|
||||
<item>Asia/Kamchatka</item>
|
||||
<item>Asia/Karachi</item>
|
||||
<item>Asia/Kathmandu</item>
|
||||
<item>Asia/Kolkata</item>
|
||||
<item>Asia/Krasnoyarsk</item>
|
||||
<item>Asia/Kuala_Lumpur</item>
|
||||
<item>Asia/Kuwait</item>
|
||||
<item>Asia/Magadan</item>
|
||||
<item>Asia/Muscat</item>
|
||||
<item>Asia/Novosibirsk</item>
|
||||
<item>Asia/Rangoon</item>
|
||||
<item>Asia/Riyadh</item>
|
||||
<item>Asia/Seoul</item>
|
||||
<item>Asia/Shanghai</item>
|
||||
<item>Asia/Singapore</item>
|
||||
<item>Asia/Srednekolymsk</item>
|
||||
<item>Asia/Taipei</item>
|
||||
<item>Asia/Tashkent</item>
|
||||
<item>Asia/Tbilisi</item>
|
||||
<item>Asia/Tehran</item>
|
||||
<item>Asia/Tokyo</item>
|
||||
<item>Asia/Ulaanbaatar</item>
|
||||
<item>Asia/Urumqi</item>
|
||||
<item>Asia/Vladivostok</item>
|
||||
<item>Asia/Yakutsk</item>
|
||||
<item>Asia/Yekaterinburg</item>
|
||||
<item>Asia/Yerevan</item>
|
||||
<item>Atlantic/Azores</item>
|
||||
<item>Atlantic/Cape_Verde</item>
|
||||
<item>Atlantic/South_Georgia</item>
|
||||
<item>Australia/Adelaide</item>
|
||||
<item>Australia/Brisbane</item>
|
||||
<item>Australia/Canberra</item>
|
||||
<item>Australia/Darwin</item>
|
||||
<item>Australia/Hobart</item>
|
||||
<item>Australia/Melbourne</item>
|
||||
<item>Australia/Perth</item>
|
||||
<item>Australia/Sydney</item>
|
||||
<item>Etc/GMT+12</item>
|
||||
<item>Etc/UTC</item>
|
||||
<item>Europe/Amsterdam</item>
|
||||
<item>Europe/Athens</item>
|
||||
<item>Europe/Belgrade</item>
|
||||
<item>Europe/Berlin</item>
|
||||
<item>Europe/Bratislava</item>
|
||||
<item>Europe/Brussels</item>
|
||||
<item>Europe/Bucharest</item>
|
||||
<item>Europe/Budapest</item>
|
||||
<item>Europe/Copenhagen</item>
|
||||
<item>Europe/Dublin</item>
|
||||
<item>Europe/Helsinki</item>
|
||||
<item>Europe/Istanbul</item>
|
||||
<item>Europe/Kaliningrad</item>
|
||||
<item>Europe/Kiev</item>
|
||||
<item>Europe/Lisbon</item>
|
||||
<item>Europe/Ljubljana</item>
|
||||
<item>Europe/London</item>
|
||||
<item>Europe/Madrid</item>
|
||||
<item>Europe/Minsk</item>
|
||||
<item>Europe/Moscow</item>
|
||||
<item>Europe/Paris</item>
|
||||
<item>Europe/Prague</item>
|
||||
<item>Europe/Riga</item>
|
||||
<item>Europe/Rome</item>
|
||||
<item>Europe/Samara</item>
|
||||
<item>Europe/Sarajevo</item>
|
||||
<item>Europe/Skopje</item>
|
||||
<item>Europe/Sofia</item>
|
||||
<item>Europe/Stockholm</item>
|
||||
<item>Europe/Tallinn</item>
|
||||
<item>Europe/Vienna</item>
|
||||
<item>Europe/Vilnius</item>
|
||||
<item>Europe/Volgograd</item>
|
||||
<item>Europe/Warsaw</item>
|
||||
<item>Europe/Zagreb</item>
|
||||
<item>Europe/Zurich</item>
|
||||
<item>Pacific/Apia</item>
|
||||
<item>Pacific/Auckland</item>
|
||||
<item>Pacific/Chatham</item>
|
||||
<item>Pacific/Fakaofo</item>
|
||||
<item>Pacific/Fiji</item>
|
||||
<item>Pacific/Guadalcanal</item>
|
||||
<item>Pacific/Guam</item>
|
||||
<item>Pacific/Honolulu</item>
|
||||
<item>Pacific/Majuro</item>
|
||||
<item>Pacific/Midway</item>
|
||||
<item>Pacific/Noumea</item>
|
||||
<item>Pacific/Pago_Pago</item>
|
||||
<item>Pacific/Port_Moresby</item>
|
||||
<item>Pacific/Tongatapu</item>
|
||||
</string-array>
|
||||
<string-array name="server_supported_locales" translatable="false">
|
||||
<item>af</item>
|
||||
<item>an</item>
|
||||
<item>ar</item>
|
||||
<item>ast</item>
|
||||
<item>be</item>
|
||||
<item>bg</item>
|
||||
<item>bn</item>
|
||||
<item>br</item>
|
||||
<item>bs</item>
|
||||
<item>ca</item>
|
||||
<item>ckb</item>
|
||||
<item>co</item>
|
||||
<item>cs</item>
|
||||
<item>cy</item>
|
||||
<item>da</item>
|
||||
<item>de</item>
|
||||
<item>el</item>
|
||||
<item>en</item>
|
||||
<item>en-GB</item>
|
||||
<item>eo</item>
|
||||
<item>es</item>
|
||||
<item>es-AR</item>
|
||||
<item>es-MX</item>
|
||||
<item>et</item>
|
||||
<item>eu</item>
|
||||
<item>fa</item>
|
||||
<item>fi</item>
|
||||
<item>fo</item>
|
||||
<item>fr</item>
|
||||
<item>fr-QC</item>
|
||||
<item>fy</item>
|
||||
<item>ga</item>
|
||||
<item>gd</item>
|
||||
<item>gl</item>
|
||||
<item>he</item>
|
||||
<item>hi</item>
|
||||
<item>hr</item>
|
||||
<item>hu</item>
|
||||
<item>hy</item>
|
||||
<item>id</item>
|
||||
<item>ig</item>
|
||||
<item>io</item>
|
||||
<item>is</item>
|
||||
<item>it</item>
|
||||
<item>ja</item>
|
||||
<item>ka</item>
|
||||
<item>kab</item>
|
||||
<item>kk</item>
|
||||
<item>kn</item>
|
||||
<item>ko</item>
|
||||
<item>ku</item>
|
||||
<item>kw</item>
|
||||
<item>la</item>
|
||||
<item>lt</item>
|
||||
<item>lv</item>
|
||||
<item>mk</item>
|
||||
<item>ml</item>
|
||||
<item>mr</item>
|
||||
<item>ms</item>
|
||||
<item>my</item>
|
||||
<item>nl</item>
|
||||
<item>nn</item>
|
||||
<item>no</item>
|
||||
<item>oc</item>
|
||||
<item>pa</item>
|
||||
<item>pl</item>
|
||||
<item>pt-BR</item>
|
||||
<item>pt-PT</item>
|
||||
<item>ro</item>
|
||||
<item>ru</item>
|
||||
<item>sa</item>
|
||||
<item>sc</item>
|
||||
<item>sco</item>
|
||||
<item>si</item>
|
||||
<item>sk</item>
|
||||
<item>sl</item>
|
||||
<item>sq</item>
|
||||
<item>sr</item>
|
||||
<item>sr-Latn</item>
|
||||
<item>sv</item>
|
||||
<item>szl</item>
|
||||
<item>ta</item>
|
||||
<item>te</item>
|
||||
<item>th</item>
|
||||
<item>tr</item>
|
||||
<item>tt</item>
|
||||
<item>ug</item>
|
||||
<item>uk</item>
|
||||
<item>ur</item>
|
||||
<item>vi</item>
|
||||
<item>zgh</item>
|
||||
<item>zh-CN</item>
|
||||
<item>zh-HK</item>
|
||||
<item>zh-TW</item>
|
||||
</string-array>
|
||||
</resources>
|
||||
Reference in New Issue
Block a user