#2418 resolved conflicts

This commit is contained in:
gouri-panda 2020-11-02 15:02:21 +05:30
commit d28d00ea66
9 changed files with 222 additions and 231 deletions

View File

@ -39,7 +39,7 @@ Text should contrast well, use the correct weight and size to present content as
Views using the same style often use different text style. Therefore text styles, and view styles are seperated and can be used simultaneously. To keep an android application consistent in style, thirteen text style attributes should be defined. These style attributes can be generated ([Material Design type scale generator](https://material.io/design/typography/the-type-system.html#type-scale)), or defined by editing `core/../values/type.xml`. Views using the same style often use different text style. Therefore text styles, and view styles are seperated and can be used simultaneously. To keep an android application consistent in style, thirteen text style attributes should be defined. These style attributes can be generated ([Material Design type scale generator](https://material.io/design/typography/the-type-system.html#type-scale)), or defined by editing `core/../values/type.xml`.
All text should have a text style to simplifiy appearance changes. To set a text style, simply set the `textAppearance` property using one of the thirteen text style attributes from `core/../values/type.xml`. Text can also be grouped if they are related and uses the same text style. This grouping can be done by creating a style that inherits, or sets a specific text appearance. E.x. `<style name="no_content_text" parent="TextAppearance.KiwixTheme.Headline5" />`. All text should have a text style to simplify appearance changes. To set a text style, simply set the `textAppearance` property using one of the thirteen text style attributes from `core/../values/type.xml`. Text can also be grouped if they are related and uses the same text style. This grouping can be done by creating a style that inherits, or sets a specific text appearance. E.x. `<style name="no_content_text" parent="TextAppearance.KiwixTheme.Headline5" />`.
Additional reading can be found at [Material Design - Type System](https://material.io/design/typography/the-type-system.html#type-scale). Additional reading can be found at [Material Design - Type System](https://material.io/design/typography/the-type-system.html#type-scale).

View File

@ -1,9 +1,12 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!-- Authors: <!-- Authors:
* 1917 Ekim Devrimi
* Orbot707 * Orbot707
--> -->
<resources> <resources>
<string name="file_system_does_not_support_4gb">Sistemê dosyay şıma 4GB ra cori rê peşti nêdana</string> <string name="file_system_does_not_support_4gb">Sistemê dosyay şıma 4GB ra cori rê peşti nêdana</string>
<string name="detecting_file_system">Sistemê dosyaya şıma heta 4GB vıraştışi hesneyê</string> <string name="detecting_file_system">Sistemê dosyaya şıma heta 4GB vıraştışi hesneyê</string>
<string name="cannot_open_file">Dosya nêabiye. Kerem kerê ena dosyay Kıtabgahê Taba Cihazi de cı geyre</string> <string name="cannot_open_file">Dosya nêabiye. Kerem kerê ena dosyay Kıtabgahê Taba Cihazi de cı geyre</string>
<string name="send_files_title">Doaya bar kerê</string>
<string name="receive_files_title">Dosya bıgêrê</string>
</resources> </resources>

View File

@ -15,6 +15,7 @@
<ID>LongParameterList:ToolbarScrollingKiwixWebView.kt$ToolbarScrollingKiwixWebView$( context: Context, callback: WebViewCallback, attrs: AttributeSet, nonVideoView: ViewGroup, videoView: ViewGroup, webViewClient: CoreWebViewClient, toolbarView: View, bottomBarView: View, sharedPreferenceUtil: SharedPreferenceUtil )</ID> <ID>LongParameterList:ToolbarScrollingKiwixWebView.kt$ToolbarScrollingKiwixWebView$( context: Context, callback: WebViewCallback, attrs: AttributeSet, nonVideoView: ViewGroup, videoView: ViewGroup, webViewClient: CoreWebViewClient, toolbarView: View, bottomBarView: View, sharedPreferenceUtil: SharedPreferenceUtil )</ID>
<ID>MagicNumber:ArticleCount.kt$ArticleCount$1000.0</ID> <ID>MagicNumber:ArticleCount.kt$ArticleCount$1000.0</ID>
<ID>MagicNumber:ArticleCount.kt$ArticleCount$3</ID> <ID>MagicNumber:ArticleCount.kt$ArticleCount$3</ID>
<ID>MagicNumber:CompatFindActionModeCallback.kt$CompatFindActionModeCallback$100</ID>
<ID>MagicNumber:DownloadItem.kt$DownloadItem$1000L</ID> <ID>MagicNumber:DownloadItem.kt$DownloadItem$1000L</ID>
<ID>MagicNumber:DownloaderModule.kt$DownloaderModule$5</ID> <ID>MagicNumber:DownloaderModule.kt$DownloaderModule$5</ID>
<ID>MagicNumber:FetchDownloadNotificationManager.kt$FetchDownloadNotificationManager$100</ID> <ID>MagicNumber:FetchDownloadNotificationManager.kt$FetchDownloadNotificationManager$100</ID>
@ -29,6 +30,7 @@
<ID>MagicNumber:Seconds.kt$Seconds$60</ID> <ID>MagicNumber:Seconds.kt$Seconds$60</ID>
<ID>MagicNumber:Seconds.kt$Seconds$60.0</ID> <ID>MagicNumber:Seconds.kt$Seconds$60.0</ID>
<ID>MagicNumber:TabsAdapter.kt$TabsAdapter$8</ID> <ID>MagicNumber:TabsAdapter.kt$TabsAdapter$8</ID>
<ID>NestedBlockDepth:CompatFindActionModeCallback.kt$CompatFindActionModeCallback$findAll</ID>
<ID>NestedBlockDepth:FileUtils.kt$FileUtils$deleteZimFile</ID> <ID>NestedBlockDepth:FileUtils.kt$FileUtils$deleteZimFile</ID>
<ID>NestedBlockDepth:ImageUtils.kt$ImageUtils$getBitmapFromView</ID> <ID>NestedBlockDepth:ImageUtils.kt$ImageUtils$getBitmapFromView</ID>
<ID>NestedBlockDepth:JNIInitialiser.kt$JNIInitialiser$loadICUData</ID> <ID>NestedBlockDepth:JNIInitialiser.kt$JNIInitialiser$loadICUData</ID>
@ -52,6 +54,7 @@
<ID>ReturnCount:ImageUtils.kt$ImageUtils$private fun getBitmapFromView(width: Int, height: Int, viewToDrawFrom: View): Bitmap?</ID> <ID>ReturnCount:ImageUtils.kt$ImageUtils$private fun getBitmapFromView(width: Int, height: Int, viewToDrawFrom: View): Bitmap?</ID>
<ID>ReturnCount:OnSwipeTouchListener.kt$OnSwipeTouchListener.GestureListener$override fun onFling( e1: MotionEvent, e2: MotionEvent, velocityX: Float, velocityY: Float ): Boolean</ID> <ID>ReturnCount:OnSwipeTouchListener.kt$OnSwipeTouchListener.GestureListener$override fun onFling( e1: MotionEvent, e2: MotionEvent, velocityX: Float, velocityY: Float ): Boolean</ID>
<ID>ReturnCount:ToolbarScrollingKiwixWebView.kt$ToolbarScrollingKiwixWebView$@SuppressLint("ClickableViewAccessibility") override fun onTouchEvent(event: MotionEvent): Boolean</ID> <ID>ReturnCount:ToolbarScrollingKiwixWebView.kt$ToolbarScrollingKiwixWebView$@SuppressLint("ClickableViewAccessibility") override fun onTouchEvent(event: MotionEvent): Boolean</ID>
<ID>TooGenericExceptionCaught:CompatFindActionModeCallback.kt$CompatFindActionModeCallback$exception: Exception</ID>
<ID>TooGenericExceptionCaught:JNIInitialiser.kt$JNIInitialiser$e: Exception</ID> <ID>TooGenericExceptionCaught:JNIInitialiser.kt$JNIInitialiser$e: Exception</ID>
<ID>TooGenericExceptionCaught:OnSwipeTouchListener.kt$OnSwipeTouchListener.GestureListener$exception: Exception</ID> <ID>TooGenericExceptionCaught:OnSwipeTouchListener.kt$OnSwipeTouchListener.GestureListener$exception: Exception</ID>
<ID>TooGenericExceptionThrown:AdapterDelegateManager.kt$AdapterDelegateManager$throw RuntimeException("No delegate registered for $item")</ID> <ID>TooGenericExceptionThrown:AdapterDelegateManager.kt$AdapterDelegateManager$throw RuntimeException("No delegate registered for $item")</ID>

View File

@ -1,226 +0,0 @@
/*
* Kiwix Android
* Copyright (c) 2019 Kiwix <android.kiwix.org>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.kiwix.kiwixmobile.core.main;
import android.annotation.SuppressLint;
import android.content.Context;
import android.text.Editable;
import android.text.Selection;
import android.text.Spannable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.webkit.WebView;
import android.widget.EditText;
import android.widget.TextView;
import androidx.appcompat.view.ActionMode;
import java.lang.reflect.Method;
import org.kiwix.kiwixmobile.core.R;
public class CompatFindActionModeCallback
implements ActionMode.Callback, TextWatcher, View.OnClickListener {
public boolean isActive;
private View customView;
private EditText editText;
private TextView findResultsTextView;
private WebView webView;
private InputMethodManager input;
private ActionMode actionMode;
@SuppressLint("InflateParams") CompatFindActionModeCallback(Context context) {
customView = LayoutInflater.from(context).inflate(R.layout.webview_search, null);
editText = customView.findViewById(R.id.edit);
editText.setOnClickListener(this);
findResultsTextView = customView.findViewById(R.id.find_results);
input = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
isActive = false;
setText("");
}
public void setActive() {
isActive = true;
}
public void finish() {
actionMode.finish();
webView.clearMatches();
}
// Place text in the text field so it can be searched for. Need to press
// the find next or find previous button to find all of the matches.
public void setText(String text) {
editText.setText(text);
Spannable span = editText.getText();
int length = span.length();
// Ideally, we would like to set the selection to the whole field,
// but this brings up the Text selection CAB, which dismisses this
// one.
Selection.setSelection(span, length, length);
// Necessary each time we set the text, so that this will watch
// changes to it.
span.setSpan(this, 0, length, Spannable.SPAN_INCLUSIVE_INCLUSIVE);
}
// Set the WebView to search. Must be non null, and set before calling startActionMode.
public void setWebView(WebView webView) {
if (null == webView) {
throw new AssertionError(
"WebView supplied to CompatFindActionModeCallback cannot be null");
}
this.webView = webView;
findResultsTextView.setVisibility(View.VISIBLE);
this.webView.setFindListener((activeMatchOrdinal, numberOfMatches, isDoneCounting) -> {
String result;
if (editText.getText().toString().isEmpty()) {
result = "";
} else if (numberOfMatches == 0) {
result = "0/0";
} else {
result = (activeMatchOrdinal + 1) + "/" + numberOfMatches;
}
findResultsTextView.setText(result);
});
}
// Move the highlight to the next match.
// If true, find the next match further down in the document.
// If false, find the previous match, up in the document.
private void findNext(boolean next) {
if (webView == null) {
throw new AssertionError("No WebView for CompatFindActionModeCallback::findNext");
}
webView.findNext(next);
}
// Highlight all the instances of the string from mEditText in mWebView.
public void findAll() {
if (webView == null) {
throw new AssertionError("No WebView for CompatFindActionModeCallback::findAll");
}
CharSequence find = editText.getText();
if (find == null || find.length() == 0) {
webView.clearMatches();
webView.findAllAsync("");
} else {
webView.findAllAsync(find.toString());
// Enable word highlighting with reflection
try {
for (Method ms : WebView.class.getDeclaredMethods()) {
if (ms.getName().equals("setFindIsUp")) {
ms.setAccessible(true);
ms.invoke(webView, true);
break;
}
}
} catch (Exception ignored) {
}
}
}
// Show on screen keyboard
public void showSoftInput() {
//wait for any hidden show/hide processes to finish
editText.postDelayed(() -> {
editText.requestFocus();
//show the keyboard
input.showSoftInput(editText, 0);
}, 100);
}
@Override
public void onClick(View v) {
findNext(true);
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
mode.setCustomView(customView);
mode.getMenuInflater().inflate(R.menu.menu_webview, menu);
actionMode = mode;
Editable edit = editText.getText();
Selection.setSelection(edit, edit.length());
editText.requestFocus();
return true;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
actionMode = null;
isActive = false;
webView.clearMatches();
input.hideSoftInputFromWindow(webView.getWindowToken(), 0);
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
if (webView == null) {
throw new AssertionError(
"No WebView for CompatFindActionModeCallback::onActionItemClicked");
}
input.hideSoftInputFromWindow(webView.getWindowToken(), 0);
int itemId = item.getItemId();
if (itemId == R.id.find_prev) {
findNext(false);
} else if (itemId == R.id.find_next) {
findNext(true);
} else {
return false;
}
return true;
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// Does nothing. Needed to implement a TextWatcher.
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
findAll();
}
@Override
public void afterTextChanged(Editable s) {
// Does nothing. Needed to implement a TextWatcher.
}
}

View File

@ -0,0 +1,190 @@
/*
* Kiwix Android
* Copyright (c) 2019 Kiwix <android.kiwix.org>
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package org.kiwix.kiwixmobile.core.main
import android.annotation.SuppressLint
import android.content.Context
import android.text.Editable
import android.text.Selection
import android.text.Spannable
import android.text.TextWatcher
import android.util.Log
import android.view.LayoutInflater
import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.view.inputmethod.InputMethodManager
import android.webkit.WebView
import android.widget.EditText
import android.widget.TextView
import androidx.appcompat.view.ActionMode
import org.kiwix.kiwixmobile.core.R
class CompatFindActionModeCallback internal constructor(context: Context) :
ActionMode.Callback, TextWatcher, View.OnClickListener {
private val tag = "CompatFindActionMode"
@JvmField var isActive: Boolean = false
@SuppressLint("InflateParams")
private val customView: View = LayoutInflater.from(context).inflate(R.layout.webview_search, null)
private val editText: EditText = customView.findViewById(R.id.edit)
private val findResultsTextView: TextView = customView.findViewById(R.id.find_results)
private var webView: WebView? = null
private val input: InputMethodManager =
context.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
private var actionMode: ActionMode? = null
init {
editText.setOnClickListener(this)
setText("")
}
fun setActive() {
isActive = true
}
fun finish() {
actionMode?.finish()
webView?.clearMatches()
}
// Place text in the text field so it can be searched for. Need to press
// the find next or find previous button to find all of the matches.
fun setText(text: String?) {
editText.setText(text)
val span: Spannable = editText.text
val length = span.length
// Ideally, we would like to set the selection to the whole field,
// but this brings up the Text selection CAB, which dismisses this
// one.
Selection.setSelection(span, length, length)
// Necessary each time we set the text, so that this will watch
// changes to it.
span.setSpan(this, 0, length, Spannable.SPAN_INCLUSIVE_INCLUSIVE)
}
// Set the WebView to search. Must be non null, and set before calling startActionMode.
fun setWebView(webView: WebView?) {
this.webView = requireNotNull(webView) {
"WebView supplied to CompatFindActionModeCallback cannot be null"
}
findResultsTextView.visibility = View.VISIBLE
this.webView?.setFindListener { activeMatchOrdinal: Int, numberOfMatches: Int, _: Boolean ->
findResultsTextView.text = when {
editText.text.toString().isEmpty() -> ""
numberOfMatches == 0 -> "0/0"
else -> "${activeMatchOrdinal + 1}/$numberOfMatches"
}
}
}
// Move the highlight to the next match.
// If true, find the next match further down in the document.
// If false, find the previous match, up in the document.
private fun findNext(next: Boolean) {
requireNotNull(webView) {
"No WebView for CompatFindActionModeCallback::findNext"
}.findNext(next)
}
// Highlight all the instances of the string from mEditText in mWebView.
fun findAll() {
requireNotNull(webView) {
"No WebView for CompatFindActionModeCallback::findAll"
}
val textToFind: CharSequence? = editText.text
if (textToFind?.isNotEmpty() == true) {
webView?.findAllAsync("$textToFind")
// Enable word highlighting with reflection
try {
WebView::class.java.declaredMethods
.firstOrNull { it.name == "setFindIsUp" }
?.let { method ->
method.isAccessible = true
method.invoke(webView, true)
}
} catch (exception: Exception) {
Log.e(tag, "Exception in findAll", exception)
}
} else {
webView?.clearMatches()
webView?.findAllAsync("")
}
}
// Show on screen keyboard
fun showSoftInput() {
// wait for any hidden show/hide processes to finish
editText.postDelayed({
editText.requestFocus()
// show the keyboard
input.showSoftInput(editText, 0)
}, 100)
}
override fun onClick(v: View) {
findNext(true)
}
override fun onCreateActionMode(mode: ActionMode, menu: Menu): Boolean {
mode.customView = customView
mode.menuInflater.inflate(R.menu.menu_webview, menu)
actionMode = mode
val edit = editText.text
Selection.setSelection(edit, edit.length)
editText.requestFocus()
return true
}
override fun onDestroyActionMode(mode: ActionMode) {
actionMode = null
isActive = false
webView?.clearMatches()
input.hideSoftInputFromWindow(webView?.windowToken, 0)
}
override fun onPrepareActionMode(mode: ActionMode, menu: Menu): Boolean = false
override fun onActionItemClicked(mode: ActionMode, item: MenuItem): Boolean {
requireNotNull(webView) {
"No WebView for CompatFindActionModeCallback::onActionItemClicked"
}
input.hideSoftInputFromWindow(webView?.windowToken, 0)
when (item.itemId) {
R.id.find_prev -> findNext(false)
R.id.find_next -> findNext(true)
else -> return false
}
return true
}
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {
// Does nothing. Needed to implement a TextWatcher.
}
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
findAll()
}
override fun afterTextChanged(s: Editable) {
// Does nothing. Needed to implement a TextWatcher.
}
}

View File

@ -30,6 +30,7 @@
<string name="hotspot_service_channel_name">Kanalê xızmeti Hotspot</string> <string name="hotspot_service_channel_name">Kanalê xızmeti Hotspot</string>
<string name="hotspot_failed_title">Serkewtışê hotspoti nêbiyo</string> <string name="hotspot_failed_title">Serkewtışê hotspoti nêbiyo</string>
<string name="go_to_wifi_settings_label">Ravêrê eyaranê Wi-Fi</string> <string name="go_to_wifi_settings_label">Ravêrê eyaranê Wi-Fi</string>
<string name="connection_refused">Gırebiyayış biyo red</string>
<string name="hotspot_running">Hotspoto gureyneyino</string> <string name="hotspot_running">Hotspoto gureyneyino</string>
<string name="no_books_selected_toast_message">Veror kıtaba weçinê</string> <string name="no_books_selected_toast_message">Veror kıtaba weçinê</string>
<string name="server_failed_message">Server nêserniyayo. Kerem ke hotspot ake</string> <string name="server_failed_message">Server nêserniyayo. Kerem ke hotspot ake</string>
@ -38,10 +39,11 @@
<string name="server_stopped_successfully_toast_message">Server hewl vındarnayo</string> <string name="server_stopped_successfully_toast_message">Server hewl vındarnayo</string>
<string name="hotspot_turned_on">Hotspot abiya</string> <string name="hotspot_turned_on">Hotspot abiya</string>
<string name="hotspot_details_message">Cêr de lokal detayê hotspoti deyaye.\nSSID: %1$s\nRavêrdış: %2$s</string> <string name="hotspot_details_message">Cêr de lokal detayê hotspoti deyaye.\nSSID: %1$s\nRavêrdış: %2$s</string>
<string name="server_textview_default_message">Server de depo kerde dosyayan weçinê</string>
<string name="progress_dialog_starting_server">Server gureyneyino</string> <string name="progress_dialog_starting_server">Server gureyneyino</string>
<string name="hotspot_dialog_title">Telimatê meymandariya kıtaban</string> <string name="hotspot_dialog_title">Telimatê meymandariya kıtaban</string>
<string name="wifi_dialog_title">Gırey Wi-fi tesbit biya</string> <string name="wifi_dialog_title">Gırey Wi-fi tesbit biya</string>
<string name="hotspot_dialog_message" fuzzy="true">Serva gureynayışê vêri WIFI hotspoti menuel akerê</string> <string name="hotspot_dialog_message">Seba ena xısusiyeti gureynayışi rê gani veri hotspotê WIFI peydeatana akerê ya zi esas cihaz u gırote cihazi eyni torra Wi-Fi gırebiyayışê cı kontrol kerê.</string>
<string name="hotspot_dialog_neutral_button">RAVÊR Şİ</string> <string name="hotspot_dialog_neutral_button">RAVÊR Şİ</string>
<string name="hotspot_channel_description">Heqa Hotspot/server eleqeyın rocaney .</string> <string name="hotspot_channel_description">Heqa Hotspot/server eleqeyın rocaney .</string>
<string name="hotspot_notification_content_title">Kiwix Hotspot</string> <string name="hotspot_notification_content_title">Kiwix Hotspot</string>
@ -197,6 +199,7 @@
<string name="connection_failed">Gıreyin nêbiya</string> <string name="connection_failed">Gıreyin nêbiya</string>
<string name="transfer_to">%s ya wa dosya transfer vo?</string> <string name="transfer_to">%s ya wa dosya transfer vo?</string>
<string name="file_transfer_complete">Transferê dosya biyo temam</string> <string name="file_transfer_complete">Transferê dosya biyo temam</string>
<string name="search_for_peers">Zey pêyan cıgeyre</string>
<string name="your_device">Cihazê Şıma:</string> <string name="your_device">Cihazê Şıma:</string>
<string name="nearby_devices">NEZDI CİHAZİ</string> <string name="nearby_devices">NEZDI CİHAZİ</string>
<string name="files_for_transfer">TRANSFERÊ DOSYAYAN</string> <string name="files_for_transfer">TRANSFERÊ DOSYAYAN</string>
@ -218,11 +221,21 @@
<string name="delete_history">Veror pêro wa bıesterneyo?</string> <string name="delete_history">Veror pêro wa bıesterneyo?</string>
<string name="delete_selected_history">Weçinaye veror wa bıesteriyo?</string> <string name="delete_selected_history">Weçinaye veror wa bıesteriyo?</string>
<string name="delete_bookmarks">İşareti pêro wa bıesteriyo?</string> <string name="delete_bookmarks">İşareti pêro wa bıesteriyo?</string>
<string name="delete_selected_bookmarks">Weçineyaye nışani wa bıesteriyê?</string>
<string name="on">Akerde</string> <string name="on">Akerde</string>
<string name="off">Racınaye</string> <string name="off">Racınaye</string>
<string name="auto">Otomatik</string> <string name="auto">Otomatik</string>
<string name="send_report">Rapora teşhisi bırışê</string>
<string name="crash_checkbox_file_system">Detayê Sistemê Dosya</string>
<string name="diagnostic_report">Rapora Teşhisi</string>
<string name="percentage">%d%%</string> <string name="percentage">%d%%</string>
<string name="pref_text_zoom_title">Nazdiyiya metini</string> <string name="pref_text_zoom_title">Nazdiyiya metini</string>
<string name="search_open_in_new_tab">Taba newiye de ake</string> <string name="search_open_in_new_tab">Taba newiye de ake</string>
<string name="reader">Wanayoğ</string> <string name="reader">Wanayoğ</string>
<string name="no_open_book">Akerde kıtab çıniyo</string>
<string name="open_library">Kıtabxaney akerê</string>
<string name="tab_restored">Tab peyser ard</string>
<string name="open_drawer">Antergey akerê</string>
<string name="close_drawer">Antergey bıqefelne</string>
<string name="how_to_update_content">Zerrek seni rocane beno?</string>
</resources> </resources>

View File

@ -228,6 +228,7 @@
<string name="severe_loss_error">שגיאה חמורה! נא לנסות לכבות ולהדליק מחדש את ה־P2P בווייפיי</string> <string name="severe_loss_error">שגיאה חמורה! נא לנסות לכבות ולהדליק מחדש את ה־P2P בווייפיי</string>
<string name="connection_failed">החיבור נכשל</string> <string name="connection_failed">החיבור נכשל</string>
<string name="permission_rationale_location">נדרשת הרשאת גישה באנדרואיד כדי לאפשר ליישום לזהות מכשירים עמיתים</string> <string name="permission_rationale_location">נדרשת הרשאת גישה באנדרואיד כדי לאפשר ליישום לזהות מכשירים עמיתים</string>
<string name="permission_rationale_location_on_host_zim_file">נדרש אישור לגשת למיקום על ידי Android כדי לאפשרים ליישומון לאחסן קובצי Zim</string>
<string name="permission_refused_location">לא ניתן לאתר מגשירים עמיתים ללא הרשאות מיקום</string> <string name="permission_refused_location">לא ניתן לאתר מגשירים עמיתים ללא הרשאות מיקום</string>
<string name="permission_refused_storage">לא ניתן לגשת לקובצי zim ללא הרשאות אחסון</string> <string name="permission_refused_storage">לא ניתן לגשת לקובצי zim ללא הרשאות אחסון</string>
<string name="request_enable_location">נא להפעיל מיקום כדי לאפשר זיהוי עמיתים</string> <string name="request_enable_location">נא להפעיל מיקום כדי לאפשר זיהוי עמיתים</string>

View File

@ -263,5 +263,12 @@
<string name="percentage">%d%%</string> <string name="percentage">%d%%</string>
<string name="pref_text_zoom_title">Text-zoomning</string> <string name="pref_text_zoom_title">Text-zoomning</string>
<string name="search_open_in_new_tab">Öppna i ny flik</string> <string name="search_open_in_new_tab">Öppna i ny flik</string>
<string name="reader">Läsare</string>
<string name="no_open_book">Inga öppnade böcker</string>
<string name="open_library">Öppna bibliotek</string>
<string name="tab_restored">Fliken återställdes</string> <string name="tab_restored">Fliken återställdes</string>
<string name="open_drawer">Öppna sidomeny</string>
<string name="close_drawer">Stäng sidomeny</string>
<string name="how_to_update_content">Hur uppdaterar man innehåll?</string>
<string name="update_content_description">För att uppdatera innehåll (en zim-fil) behöver du ladda ned den fullständig senaste versionen samma innehåll. Du kan göra det via nedladdningsavsnittet.</string>
</resources> </resources>

View File

@ -16,7 +16,7 @@
<string name="go_to_wifi_settings_label">ⴷⴷⵓ ⵖⵔ ⵜⵉⵙⵖⴰⵍ ⵓⵡⵉⴼⵉ</string> <string name="go_to_wifi_settings_label">ⴷⴷⵓ ⵖⵔ ⵜⵉⵙⵖⴰⵍ ⵓⵡⵉⴼⵉ</string>
<string name="pref_display_title">ⵙⴽⵏ</string> <string name="pref_display_title">ⵙⴽⵏ</string>
<string name="pref_info_title">ⵓⵎⵍⴰⵏ</string> <string name="pref_info_title">ⵓⵎⵍⴰⵏ</string>
<string name="pref_info_version">ⵜⴰⵡⵉⵍⴰ</string> <string name="pref_info_version">ⵜⴰⵍⵇⵇⵎⵜ</string>
<string name="pref_back_to_top">ⴰⵖⵓⵍ ⵙ ⵓⴼⵍⵍⴰ</string> <string name="pref_back_to_top">ⴰⵖⵓⵍ ⵙ ⵓⴼⵍⵍⴰ</string>
<string name="pref_language_title">ⵜⵓⵜⵍⴰⵢⵜ</string> <string name="pref_language_title">ⵜⵓⵜⵍⴰⵢⵜ</string>
<string name="pref_language_chooser">ⵙⵜⵉ ⵜⵓⵜⵍⴰⵢⵜ</string> <string name="pref_language_chooser">ⵙⵜⵉ ⵜⵓⵜⵍⴰⵢⵜ</string>
@ -46,7 +46,7 @@
<string name="tts_pause">ⵙⴱⴷⴷ</string> <string name="tts_pause">ⵙⴱⴷⴷ</string>
<string name="stop">ⵙⴱⴱⴷ</string> <string name="stop">ⵙⴱⴱⴷ</string>
<string name="internal_storage">ⴰⴳⵏⵙⴰⵏ</string> <string name="internal_storage">ⴰⴳⵏⵙⴰⵏ</string>
<string name="external_storage">ⴱⵕⵕⴰ</string> <string name="external_storage">ⴱⵕⵕⴰⵏⵉ</string>
<string name="yes">ⵢⴰⵀ</string> <string name="yes">ⵢⴰⵀ</string>
<string name="no">ⵓⵀⵓ</string> <string name="no">ⵓⵀⵓ</string>
<string name="confirm_stop_download_title">ⵙⴱⴷⴷ ⴰⴳⴰⵎ?</string> <string name="confirm_stop_download_title">ⵙⴱⴷⴷ ⴰⴳⴰⵎ?</string>
@ -57,7 +57,7 @@
<string name="time_left">ⴰⵥⵍⵎⴰⴹ</string> <string name="time_left">ⴰⵥⵍⵎⴰⴹ</string>
<string name="time_today">ⴰⵙⵙⴰ</string> <string name="time_today">ⴰⵙⵙⴰ</string>
<string name="time_yesterday">ⴰⵙⵙⵏⵏⴰⴹ</string> <string name="time_yesterday">ⴰⵙⵙⵏⵏⴰⴹ</string>
<string name="do_not_ask_anymore">ⴰⴷ ⵙⵍ ⵓⵔ ⵜⵙⵇⵙⴰⴷ</string> <string name="do_not_ask_anymore">ⵙⴰ ⵜⵙⵇⵙⴰⴷ</string>
<string name="your_languages">ⵜⵓⵜⵍⴰⵜⵉⵏ ⵉⵜⵜⵓⵙⵜⵢⵏ:</string> <string name="your_languages">ⵜⵓⵜⵍⴰⵜⵉⵏ ⵉⵜⵜⵓⵙⵜⵢⵏ:</string>
<string name="other_languages">ⵜⵓⵜⵍⴰⵢⵉⵏ ⵢⴰⴹⵏⵉⵏ:</string> <string name="other_languages">ⵜⵓⵜⵍⴰⵢⵉⵏ ⵢⴰⴹⵏⵉⵏ:</string>
<string name="new_tab_shortcut_label">ⴰⵙⴽⵙⵍ ⴰⵎⴰⵢⵏⵓ</string> <string name="new_tab_shortcut_label">ⴰⵙⴽⵙⵍ ⴰⵎⴰⵢⵏⵓ</string>