অনূদিত স্ট্রিং সম্পর্কে অ্যান্ড্রয়েড লিন্টের অভিযোগ এড়ান


119

value-* ডিরেক্টরিগুলির মধ্যে একটি ফাইলের স্ট্রিংগুলি অন্য ভাষায় অনুবাদ করা হয়নি তা নির্দিষ্ট করে বলা সম্ভব ? আমার কাছে প্রচুর স্ট্রিং রয়েছে যা সমস্ত ভাষার জন্য প্রচলিত এবং কোনও অনুবাদের দরকার নেই, তাই আমি ডিরেক্টরিতে একটি unlocalized-strings.xmlফাইল তৈরি করেছি values.. অ্যান্ড্রয়েড লিন্ট চালনা করে সমস্যাগুলি যাচাই করে দেখা যাচ্ছে যে এটি কিছু অনুবাদ অনুপস্থিত রয়েছে .. আমি চাই না পুরো প্রকল্পে এই চেকটি অক্ষম করতে, আমি এটি কেবলমাত্র কয়েকটি এক্সএমএল ফাইলগুলিতে অক্ষম করতে চাই .. এটা কি সম্ভব?

"title_widget_updater_service" is not translated in de, en, en-rUS, it

Issue: Checks for incomplete translations where not all strings are translated
Id: MissingTranslation

If an application has more than one locale, then all the strings declared in one language     
should also be translated in all other languages.

By default this detector allows regions of a language to just provide a subset of the 
strings and fall back to the standard language strings. You can require all regions to 
provide a full translation by setting the environment variable 
ANDROID_LINT_COMPLETE_REGIONS.

কিভাবে এই সংজ্ঞায়িত করতে অঞ্চল এর unlocalized স্ট্রিং?


উত্তর:


159

আমি জানি না কীভাবে সমস্ত ফাইল উপেক্ষা করবেন তবে আপনি স্ট্রিং দিয়ে স্ট্রিংটি এটি ব্যবহার করে করতে পারেন:

<string name="hello" translatable="false">hello</string>

1
এটি দেয় 'অনুবাদযোগ্য অ সংস্থানগুলি কেবলমাত্র বেস মান / ফোল্ডারে সংজ্ঞায়িত করা উচিত।
anon58192932

2
এবং এটা সঠিক। আপনি যদি কোনও স্ট্রিং অনুবাদ করতে চান না, আপনি কেবল এটি "বেস মান / ফোল্ডার" এ সংজ্ঞায়িত করতে হবে, যার অর্থ অনুবাদিত মান / ফোল্ডারে স্ট্রিংটি প্রবেশ করবেন না।
লুইস

1
@ সাইরিললরক্স উত্তরটি আরও বিস্তৃত এবং সঠিকটি হিসাবে চিহ্নিত করা উচিত কারণ এটি সমস্ত অ অনুবাদযোগ্য স্ট্রিংকে একটি ফাইলে রাখার বিকল্প দেখায়।
যোয়েল গ্লুসনাডার 17

এটি কাজ করে তবে আমি মনে করি না ত্রুটি বার্তাটি দমন করার জন্য আসলে অনুবাদযোগ্য স্ট্রিংটিকে "অনুবাদযোগ্য নয়" চিহ্নিত করে সমস্যাটি সমাধান করার সর্বোত্তম উপায়। আমরা আপাতত কিছু স্ট্রিং অনুবাদ না করাই বেছে নিই। তবে এর অর্থ এই নয় যে তারা অনুবাদযোগ্য নয়।
জিলি FENG

আমি কেবল একটি ভাষায় স্ট্রিং রাখতে চাই এবং এটি জার্মান (ডি) ভাষা (ডিফল্ট ইংরেজি নয়)। আমি এটি সেখানে রেখেছি এবং যখন আমি বিল্ডটি প্রকাশের চেষ্টা করি তখন এটি আমাকে ত্রুটি দেয়। এক্ষেত্রে কী করবেন?
Aanal মেহতা

227

এটি আপনার স্ট্রিং ফাইলের নেমস্পেসের ignoreবৈশিষ্ট্যটি toolsনিম্নরূপ:

<?xml version="1.0" encoding="utf-8"?>
<resources
  xmlns:tools="http://schemas.android.com/tools"
  tools:ignore="MissingTranslation" >

  <!-- your strings here; no need now for the translatable attribute -->

</resources>

<রিসোর্স সরঞ্জামসমূহ: উপেক্ষা = "
মিসিং ট্রান্সলেশন

5
এটি ভাল কাজ করে তবে Project->Cleanঅবশ্যই ত্রুটিগুলি অবশ্যই মুছে ফেলার জন্য আমাকে যেতে হয়েছিল ।
xonya

কমপক্ষে গ্রহনটি আমাদের আইডিএসএক্সএমএল এবং অ্যানালিটিক্স.এক্সএমএল-এর মতো বিজোড় স্ট্রিং ফোল্ডার সহ সমস্ত কিছু অনুবাদ করতে বাধ্য করে নি।
অ্যান্ড্রয়েড কোডার

2
কোডটি মাত্র 2 লাইনে সমস্ত সমস্যা সমাধানের জন্য এটি উত্তর গ্রহণ করা উচিত।
নক্সবাইপাস

153

এতে যুক্ত করুন build.gradle:

android {
     lintOptions {
        disable 'MissingTranslation'
    }
}

7
স্বয়ংক্রিয়ভাবে উত্পন্ন স্ট্রিং রিসোর্সগুলির সাথে মোকাবিলা করার একমাত্র কার্যক্ষম সমাধান han ধন্যবাদ।
স্কিজিমো

6
না, এই প্রশ্নের উপর ভিত্তি করে এটি করা উচিত নয়: "আমি পুরো প্রকল্পে এই চেকটি অক্ষম করতে চাই না"
ইয়েল গ্লুসনাডার

@ জিরাফ সিংহকে আপনার আলাদা প্রশ্ন হিসাবে পোস্ট করা উচিত এবং নিজের উত্তর দেওয়া উচিত, সমাধানের জন্য ধন্যবাদ, আগে আমাকে নিজেই এটি অক্ষম করতে হয়েছিল।
দিলজিৎ

1
এটি পুরো চেকটি অক্ষম করেছে যা সম্ভব হলে এড়ানো উচিত। আমি কেন বুঝতে পারি না কেন এটিতে এত বেশি ভোট রয়েছে।
তাসোমানিয়াক

23

আমি জানি যে 3 টি উপায়:

মান অনুসারে পরিবর্তন মান প্রয়োগ করতে: সংজ্ঞাটির translatable="false"উপর বিশিষ্টটি সেট করুন <string>:

<string name="account_setup_imap" translatable="false">IMAP</string>

যদি আপনার কাছে প্রচুর সংস্থান থাকে যা অনুবাদ করা উচিত নয়, আপনি সেগুলিকে একটি নামের ফাইলে রেখে দিতে পারেন donottranslate.xmlএবং লিন্ট তাদের সমস্তকে অনি অনুবাদযোগ্য সংস্থান হিসাবে বিবেচনা করবেন।

হ্যাকার কীবোর্ড প্রকল্পের উত্সগুলি ব্রাউজ করার সময় আমি অন্য একটি উপায় আবিষ্কার করেছি :
আপনি donottranslate-আপনার সংস্থান ফাইলটিতে উপসর্গ যুক্ত করতে পারেন । পূর্ববর্তী উদাহরণের মতো, লিন্টগুলি তাদের সমস্তকে অনি অনুবাদযোগ্য সংস্থান হিসাবে বিবেচনা করবে।
আপনার ক্ষেত্রে, আপনি unlocalized-strings.xmlদ্বারা প্রতিস্থাপন করতে পারেন donottranslate-strings.xml। এটি কাজ করছে বলে মনে হচ্ছে, তবে আমি এই টিপটির জন্য কোনও নথিপত্র পাইনি।

দেখুন: অ্যান্ড্রয়েড সরঞ্জামগুলির প্রকল্পের সাইট: অনুলিপিযোগ্য স্ট্রিং


এটি সত্য যে আমরা যদি ফাইলটিতে স্ট্রিংটি donottranlate.xmlরাখি তবে আমাদের আর translatable="false"কোনও ট্যাগ যুক্ত করার দরকার নেই ?
ইউচেন ঝং

হাঁ। আমি আমার সমস্ত প্রকল্পে donotranslate-strings.xML ফাইল ব্যবহার করি। ঠিকভাবে কাজ করে. এটি চেষ্টা করুন, এটি খুব দরকারী!
সিরিল লেরক্স

12

এই মারাত্মক লিন্ট ত্রুটি অক্ষম করার জন্য এখানে একটি অ্যান্ড্রয়েড স্টুডিও সমাধান রয়েছে:

এখানে চিত্র বর্ণনা লিখুন


2
এটি একটি বিরক্তিকর ত্রুটি হতে পারে, তবে আপনি যখন দুর্ঘটনাক্রমে আপনার অ্যাপ্লিকেশনগুলির কোনও একটি ভাষাতে একটি নতুন স্ট্রিং অনুবাদ করতে ভুলে যান তখন এটি আপনাকে বাঁচাতে পারে।
এলাদ নাভা

2

আমি মনে করি যে লিন্ট নিষ্ক্রিয় করার পরিবর্তে আপনার যা প্রয়োজন তা হ'ল এট্রিবিউট দিয়ে চিহ্নিত করুন

translatable="false"

2

" ডোনোট্রান্সলেট " (উদাহরণস্বরূপ, donnotranslate.xml , donottranslate_urls.xML , ইত্যাদি) দিয়ে শুরু হওয়া কোনও ফাইলের নামের সাথে একটি উত্স ফাইল তৈরি করুন এবং অনুপস্থিত অনুবাদগুলি অনুসন্ধানের জন্য লিন্ট তার স্ট্রিংগুলি সম্পূর্ণ উপেক্ষা করবে।


1

অনুপস্থিত অনুবাদটি যদি আপনি লিন্ট চেক করতে চান তবে আপনি যেতে পারেন

"প্রকল্পের বৈশিষ্ট্য -> অ্যান্ড্রয়েড লিন্ট পছন্দসমূহ -> মিসিং ট্রান্সলেশন নির্বাচন করুন -> তীব্রতাকে উপেক্ষা করতে সুইচ করুন",

আশা করি এটি অন্যকে আমার এই সমস্যার মুখোমুখি হতে সহায়তা করবে :)


2
অ্যান্ড্রয়েড স্টুডিওতে এটি করার কোনও উপায় আছে? আমি লিট
অ্যাড্রিয়েন_88

1

এটি করার আরেকটি উপায় হ'ল গ্রেড ফাইলটিতে আপনার স্ট্রিং যুক্ত করা resValueবা ব্যবহার করা buildConfigField। এরকম কিছু:

buildTypes {
    debug {
        buildConfigField "string", "app_name1", "App Name"
        resValue "string", "app_name2", "App Name"
    }
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        buildConfigField "string", "app_name1", "App Name"
        resValue "string", "app_name2", "App Name"
    }
}

রীতিনীতি:

// buildConfigField
BuildConfig.APP_NAME1

// resValue
getString(R.string.app_name2)

0

অ্যান্ড্রয়েড স্টুডিওতে সতর্কতা এড়াতে, পছন্দগুলি খুলুন ==> পরিদর্শন করুন, "অসম্পূর্ণ অনুবাদগুলি" নির্বাচন করুন। তবে এটি গ্রেডল বিল্ডকে প্রভাবিত করবে না।


0

এছাড়াও "অনুবাদ সম্পাদক" (স্ট্রিং.এক্সএমএল "ওপেন ট্রান্সলেশন এডিটর" এ ডান ক্লিক করুন)।

তারপরে একটি স্ট্রিংয়ের 'অবান্তর সরঞ্জামযোগ্য' বাক্সটি চেক করুন।

https://developer.android.com/studio/write/translations-editor

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.