Skip to content

Latest commit

 

History

History
380 lines (276 loc) · 29.9 KB

README.md

File metadata and controls

380 lines (276 loc) · 29.9 KB

હોકીલાઈઝેશન

શા માટે હું Google અનુવાદ દ્વારા મારી આખી એપ્લિકેશન અથવા સાઇટ ચલાવી શકતો નથી અને અન્ય ભાષામાં મૂળભૂત અનુવાદ મેળવી શકતો નથી?

હવે, તમે કરી શકો છો!

hokeylization નામ એક પોર્ટમેન્ટો છે, જેનો અર્થ થાય છે 'હોકી સ્થાનિકીકરણ'

તે કંઈક અંશે હોકી છે કારણ કે તે ખૂબ જ સરળ છે: તે Google અનુવાદને શબ્દમાળાઓ મોકલે છે

અને તે સરળ છે, છતાં પણ ખૂબ શક્તિશાળી. તે HTML દસ્તાવેજો માટે વિશેષ સમર્થન ધરાવે છે, HandlebarsJS નમૂનાઓ, અને માર્કડાઉન ફાઇલો.

તમે અનુવાદ કરી શકો છો:

  • સંદેશા ધરાવતો JavaScript ઑબ્જેક્ટ
  • કોઈપણ સંખ્યાની ફાઇલો અથવા ડિરેક્ટરીઓ, હંમેશા ડાયરેક્ટરીઝને વારંવાર ફરીને પસાર કરે છે

આને બીજી ભાષામાં વાંચો

આ README.md દસ્તાવેજનું ભાષાંતર, હોકીલાઈઝેશન ટૂલનો ઉપયોગ કરીને કરવામાં આવ્યું છે Google અનુવાદ દ્વારા સમર્થિત દરેક ભાષા!

મને ખાતરી છે કે તે સંપૂર્ણ નથી, પરંતુ હું આશા રાખું છું કે તે કંઈ કરતાં વધુ સારું છે!

🇸🇦 અરબી 🇧🇩 બંગાળી 🇩🇪 જર્મન 🇺🇸 અંગ્રેજી 🇪🇸 સ્પેનિશ 🇫🇷 ફ્રેન્ચ 🇹🇩 હૌસા 🇮🇳 હિન્દી 🇮🇩 ઇન્ડોનેશિયન 🇮🇹 ઇટાલિયન 🇯🇵 જાપાનીઝ 🇰🇷 કોરિયન 🇮🇳 મરાંઠી 🇵🇱 પોલિશ 🇧🇷 પોર્ટુગીઝ 🇷🇺 રશિયન 🇰🇪 સ્વાહિલી 🇵🇭 ટાગાલોગ 🇹🇷 ટર્કિશ 🇵🇰 ઉર્દુ 🇻🇳 વિયેતનામીસ 🇨🇳 ચાઇનીઝ

શું README ના આ અનુવાદમાં કોઈ સમસ્યા છે?

મૂળ README નો આ વિશિષ્ટ અનુવાદ ખામી હોઈ શકે છે -- સુધારાઓ ખૂબ આવકાર્ય છે! કૃપા કરીને GitHub પર પુલ વિનંતી મોકલો. અથવા જો તમને તે કરવામાં આરામદાયક ન હોય, તો સમસ્યા ખોલો

જ્યારે તમે અનુવાદ વિશે નવો GitHub મુદ્દો બનાવો છો, ત્યારે કૃપા કરીને આ કરો:

  • પૃષ્ઠ URL શામેલ કરો (બ્રાઉઝર સરનામાં બારમાંથી કૉપિ/પેસ્ટ કરો)
  • ખોટો લખાણ શામેલ કરો (બ્રાઉઝરમાંથી કૉપિ/પેસ્ટ કરો)
  • કૃપયા શું ખોટું છે તેનું વર્ણન કરો -- શું અનુવાદ ખોટો છે? શું ફોર્મેટિંગ કોઈક રીતે તૂટી ગયું છે?
  • કૃપા કરીને વધુ સારા અનુવાદનું સૂચન આપો, અથવા ટેક્સ્ટ કેવી રીતે યોગ્ય રીતે ફોર્મેટ થવો જોઈએ
  • આભાર!

સામગ્રી

સ્ત્રોત

સમર્થન અને ભંડોળ

હું પ્રોફેશનલ ઓપન સોર્સ સોફ્ટવેર ડેવલપર બનવાનો પ્રયાસ કરી રહ્યો છું. માં કામ કરી રહ્યો છું ઘણા વર્ષોથી સોફ્ટવેર ઉદ્યોગમાં, મેં સફળ કંપનીઓ શરૂ કરી છે અને તેમને જાહેર કંપનીઓને વેચી છે. તાજેતરમાં મેં મારી નોકરી ગુમાવી દીધી છે, અને મારી પાસે ખરેખર બીજું કોઈ કામ નથી

તેથી હું મદદરૂપ સોફ્ટવેર લખવાનો પ્રયાસ કરીશ અને જોઉં છું કે તે કામ કરે છે કે નહીં

જો તમે આ સૉફ્ટવેરનો ઉપયોગ કરવાનો આનંદ માણો, તો મને પણ પ્રાપ્ત કરવામાં ખૂબ આનંદ થશે સૌથી નાનું પેટ્રિઓન દ્વારા માસિક યોગદાન

આભાર!

ઇન્સ્ટોલેશન

કમાન્ડ લાઇન ટૂલનો ઉપયોગ કરવા માટે, npm અથવા yarn ઉપયોગ કરીને ઇન્સ્ટોલ કરો:

npm install -g hokeylization
yarn global add hokeylization

લાઇબ્રેરી તરીકે ઉપયોગ કરવા માટે, lite સંસ્કરણ ઇન્સ્ટોલ કરો, જે ઘણું નાનું છે:

npm install -g hokeylization-lite
yarn global add hokeylization-lite

પછી hokey આદેશ માટે મદદ જુઓ:

hokey --help
hokey -h

તમારી ભાષા અથવા અન્ય ભાષામાં આઉટપુટ જોવા માંગો છો?

hokey આપમેળે ભાષાને શોધવાનો પ્રયાસ કરે છે

તમે LC_ALL પર્યાવરણ ચલ સેટ કરીને ભાષાને દબાણ કરી શકો છો:

LC_ALL=it hokey --help

નોંધ કરો કે જો તમે hokeylization-lite ઇન્સ્ટોલ કર્યું હોય, તો આદેશ સહાય માત્ર અંગ્રેજીમાં જ ઉપલબ્ધ છે

સ્થાપના

તમારા Google અનુવાદ પ્રોજેક્ટને ઓળખવા માટે GOOGLE_TRANSLATE_PROJECT_ID પર્યાવરણ ચલ સેટ કરો

તમે ડાઉનલોડ કરેલ JSON ઓળખપત્રો પર GOOGLE_APPLICATION_CREDENTIALS પર્યાવરણ ચલ સેટ કરો Google ક્લાઉડ પર પ્રમાણીકરણ કેવી રીતે કાર્ય કરે છે તે શોધ્યા પછી (તે મજા હોઈ શકે છે)

જો તમે સ્રોત કોડમાંથી ચલાવી રહ્યાં છો, તો તમે આને .env ફાઇલમાં પણ મૂકી શકો છો ડિરેક્ટરી તેઓ રનટાઇમ પર dotenv દ્વારા લોડ કરવામાં આવશે

JavaScript સ્ટ્રિંગ રિસોર્સ ફાઇલનું ભાષાંતર કરવું

તમારું સ્ટ્રિંગ ટેબલ **આ બે સ્વરૂપોમાંથી એકમાં JavaScript ફાઇલમાં હોવું જોઈએ:

ES6 નિકાસ:

export default {
  string_key: "some value",
  another_key: "another value",
  ... more keys ...
}

કોમનજેએસ નિકાસ

module.exports = {
  string_key: "some value",
  another_key: "another value",
  ... more keys ...
}

જો આ ફાઇલનું નામ myfile.en.js હતું, તો તમે તેનો સ્પેનિશ અને જર્મનમાં આની સાથે અનુવાદ કરી શકો છો:

hokey -l es,de -o myfile.LANG.js myfile.en.js

LANG વિશેષ છે -- તે આ સાધનમાં અનામત શબ્દ છે!

આઉટપુટ ફાઇલો માટે ભાષા કોડ સાથે LANG બદલવામાં આવે છે

આમ ઉપરોક્ત આદેશ ફાઇલો બનાવે છે:

myfile.es.js
myfile.de.js

-l / --languages વિકલ્પ એ ISO ભાષા કોડની અલ્પવિરામથી અલગ કરેલી સૂચિ છે Google અનુવાદ દ્વારા સમર્થિત

જો આઉટપુટ ફાઇલ પહેલેથી જ અસ્તિત્વમાં છે, તો તે નક્કી કરવા માટે તપાસવામાં આવશે કે કઈ કી પહેલેથી અસ્તિત્વમાં છે. હાલની કીનું ભાષાંતર કરવામાં આવશે નહીં. ખૂટતી કી માટે અનુવાદો જનરેટ કરવામાં આવશે અને જોડવામાં આવશે JS ઑબ્જેક્ટના અંત સુધી. આખી ફાઇલ હંમેશા ફરીથી લખવામાં આવે છે.

બધી કીને ફરીથી અનુવાદ કરવા દબાણ કરવા માટે, -f / --force વિકલ્પનો ઉપયોગ કરો

ટેક્સ્ટ ફાઇલોની ડિરેક્ટરીનું ભાષાંતર

તમે ફાઇલોની ડિરેક્ટરીનો અનુવાદ પણ કરી શકો છો. હોકીલાઈઝેશન દરેકની વારંવાર મુલાકાત લેશે ડિરેક્ટરીમાં ફાઇલ કરો અને Google અનુવાદ દ્વારા તેની સામગ્રીઓ ચલાવો અને આઉટપુટ સાચવો અલગ ડિરેક્ટરી ટ્રીમાં સમાન નામવાળી ફાઇલમાં

જ્યારે તમારા અનુવાદનું લક્ષ્ય નિર્દેશિકા હોય, ત્યારે આ મોડ સક્ષમ હોય છે

-o / --outfile વિકલ્પ આઉટપુટ ડિરેક્ટરીનો ઉલ્લેખ કરે છે

મોટી ચેતવણી: ડિરેક્ટરીઓનું ભાષાંતર કરતી વખતે, આઉટપુટ ડિરેક્ટરીનો ઉલ્લેખ નહીં કરો તે તમારી ઇનપુટ ડિરેક્ટરીમાં છે! જો તમે આ કરશો, તો તમે આ કરશો:

  • અનંત પુનરાવર્તન પ્રેરિત કરો
  • તમારું Google બિલ ચલાવો
  • તમારી ડિસ્ક ભરો
  • ઓછી મજા કરો

અહીં શું ન કરવું તેનું ઉદાહરણ છે:

hokey -l es -o templates/es templates # <--- DON'T DO THIS!

જ્યારે આ ચાલે છે, અનુવાદિત ફાઇલો templates/es પર લખવામાં આવે છે, અને તેથી નવી બને છે અનુવાદ કરવા માટે સ્રોત ફાઇલો, કારણ કે તે templates/ હેઠળ છે -- આ પ્રક્રિયા ચાલુ રહે છે કાયમ માટે, તે કરશો નહીં!

સાચો ઉપયોગ

ઓકે, ચાલો કહીએ કે તમારી પાસે ડિરેક્ટરીમાં કેટલાક ઇમેઇલ નમૂનાઓ છે:

templates/email/en/welcome.txt
templates/email/en/welcome.html
templates/email/en/verify-account.txt
templates/email/en/verify-account.html
templates/email/en/reset-password.txt
templates/email/en/reset-password.html

આ બધાનો સ્પેનિશ અને જર્મનમાં અનુવાદ કરવા માટે, ચલાવો:

hokey -l es,de -o templates/email/LANG templates/email/en

ઉપરોક્તમાં, LANG એક આરક્ષિત શબ્દ છે અને તેને ISO ભાષા કોડ સાથે બદલવામાં આવશે

જ્યારે ઉપરોક્ત ચાલે છે ત્યારે શું થાય છે:

  • templates/email/es અને templates/email/de ડિરેક્ટરીઓ બનાવવામાં આવશે (જો તે અસ્તિત્વમાં ન હોય તો)
  • templates/email/en દરેક ફાઇલ સ્પેનિશ અને જર્મનમાં અનુવાદિત કરવામાં આવશે
  • જ્યાં સુધી તમે -f / --force નો ઉપયોગ નહીં કરો ત્યાં સુધી હાલની આઉટપુટ ફાઇલો ફરીથી બનાવવામાં આવશે નહીં
  • તમારી પાસે es અને de ની અંદર સમાન ડિરેક્ટરી માળખું અને ફાઇલો હશે જેમ કે તમારી પાસે en હેઠળ છે

અન્ય વિકલ્પો

ડ્રાય રન

શું કરવામાં આવશે તે દર્શાવવા માટે -n / --dry-run રન` પાસ કરો, પરંતુ વાસ્તવમાં કોઈ API કૉલ કરશો નહીં અથવા કોઈપણ ફાઇલો લખશો નહીં

બળ

અનુવાદોને હંમેશા ફરીથી બનાવવા માટે -f / --force પાસ કરો, ભલે તે પહેલાથી જ અસ્તિત્વમાં હોય

મેચ

ડાયરેક્ટરી-મોડમાં ચાલી રહી હોય ત્યારે પ્રક્રિયા કરેલી ફાઇલોને મર્યાદિત કરવા -m / --match પાસ કરો

તમે હંમેશા તમારી સ્રોત નિર્દેશિકામાંની દરેક ફાઇલને તમારી લક્ષ્ય નિર્દેશિકામાં અનુવાદિત કરવા માંગતા નથી

-m / --match વિકલ્પનું મૂલ્ય એ રેજેક્સ છે (શેલ અવતરણ નિયમોથી સાવચેત રહો!) જે સ્પષ્ટ કરે છે કઈ ફાઈલોનું ભાષાંતર કરવું જોઈએ

જ્યારે શંકા હોય, ત્યારે તમે આ વિકલ્પને -n / --dry-run run` સાથે જોડી શકો છો તે જોવા માટે કે કઈ ફાઇલોનું ભાષાંતર કરવામાં આવશે

બાકાત

કેટલીકવાર તમારું -m ઘણી બધી ફાઇલો સાથે મેળ ખાય છે. સ્પષ્ટપણે બાકાત રાખવા માટે -e / --excludes વિકલ્પનો ઉપયોગ કરો ફાઇલો જે અન્યથા મેળ ખાતી હોત

તમે સ્પેસ દ્વારા અલગ કરીને બહુવિધ રેગેક્સને સૂચિબદ્ધ કરી શકો છો

સામાન્ય ઉપયોગ આ હશે: --excludes node_modules dist \.git build tmp

હેન્ડલબાર

અનુવાદ કરવા માટેની સ્ટ્રીંગ્સમાં {{ handlebars }} ટેમ્પલેટ્સ હોઈ શકે છે, કાં તો બે અથવા ત્રણ કર્લી-કૌંસ સાથે

તમે કદાચ નહીં ઈચ્છો કે તે ટેમ્પલેટ્સની અંદરની સામગ્રીનું ભાષાંતર થાય

-H / --handlebars ધ્વજ પસાર કરો, અને {{ ... }} ની અંદરની કોઈપણ વસ્તુનું ભાષાંતર કરવામાં આવશે નહીં

માર્કડાઉન

માર્કડાઉન ન તો ટેક્સ્ટ છે કે ન તો html, તેથી Google અનુવાદને તેની સાથે કેટલીક મુશ્કેલીઓ છે

-M / --markdown ફ્લેગ માર્કડાઉન ફાઇલો માટે વિશેષ હેન્ડલિંગને સક્ષમ કરે છે

માર્કડાઉન ફાઇલો સાથે, જો તમે -M ધ્વજનો ઉપયોગ કરતા નથી, તો તમને કદાચ આ સમસ્યાઓ જોવા મળશે:

  • તૂટેલી કડીઓ. અનુવાદમાં, માર્કડાઉન લિંક વર્ણન સમાપ્ત થયા પછી સ્પેસ અક્ષર દેખાય છે ( ] સાથે ) પરંતુ તેની લક્ષ્ય લિંક શરૂ થાય તે પહેલાં ( ( સાથે). આનાથી માર્કડાઉન ખોટી રીતે રેન્ડર થાય છે અને લિંક દસ્તાવેજ જોતી વખતે તૂટી જાય છે.
  • કોડ બ્લોક્સનું ભાષાંતર થાય છે. Google અનુવાદને ખબર નથી કે માર્કડાઉન ક્યા કોડને માને છે અને શું નથી
  • ઇન્ડેન્ટેડ કોડ બ્લોક્સ માટે ખોટો અંતર. અનુવાદમાં અંતર સાચવવું મુશ્કેલ છે
  • જ્યારે તમે લગભગ હંમેશા ઇચ્છો છો કે તે શાબ્દિક મૂલ્યો હોય ત્યારે backticks ની અંદરની વસ્તુઓનું ભાષાંતર કરવામાં આવશે

જ્યારે -M / --markdown ધ્વજ સક્ષમ હોય:

  • પેટર્ન ]( ને ]( માં ઘટ્ટ કરવામાં આવશે આમ તૂટેલી માર્કડાઉન લિંક્સને ઠીક કરવી
  • "નો ટ્રાન્સલેટ" રેપર ઇન્ડેન્ટેડ કોડ બ્લોક્સની આસપાસ મૂકવામાં આવશે, યોગ્ય ઇન્ડેન્ટેશન સાચવીને અને તેનું ભાષાંતર ન થયું હોય તેની ખાતરી કરીને
  • એક "નો ટ્રાન્સલેટ" રેપર backticks ની અંદર ટેક્સ્ટની આસપાસ મૂકવામાં આવશે તેની ખાતરી કરવા માટે કે તે અનુવાદિત નથી

પ્રોસેસ-એઝ

સામાન્ય રીતે બધું સાદા ટેક્સ્ટ તરીકે પ્રક્રિયા કરવામાં આવે છે

જો તમારી સામગ્રી HTML છે, તો જ્યાં સુધી તમે -p html / --process-as html વિકલ્પને પાસ કરશો નહીં ત્યાં સુધી તે ગૂંગળાઈ જશે.

ફિલ્ટર

સાહસિક માટે: ડિરેક્ટરીમાં ફાઇલો પર પ્રક્રિયા કરતી વખતે, તમે -F / --filter વિકલ્પ પસાર કરી શકો છો ફાઇલસિસ્ટમ પર લખાય તે પહેલાં આઉટપુટને ફિલ્ટર કરવા માટે

આ વિકલ્પનું મૂલ્ય JS ફાઇલનો પાથ હોવો જોઈએ જે filter નામના ફંક્શનને નિકાસ કરે છે

filter ફંક્શન async અસિંકહોવું આવશ્યક છે કારણ કે તેના પરawait` કહેવામાં આવશે

ફાઇલોને ડિસ્ક પર લખવામાં આવે તે પહેલાં, ફાઇલની સંપૂર્ણ સામગ્રીને સ્ટ્રિંગ તરીકે filter ફંક્શનમાં પસાર કરવામાં આવશે.

filter ફંક્શનમાંથી વળતર મૂલ્ય એ છે જે ખરેખર સ્ટોરેજ પર લખવામાં આવશે

આમ, આખરે શું લખવામાં આવશે તેના પર તમારું સંપૂર્ણ નિયંત્રણ છે

filter સ્ક્રિપ્ટને નીચેના સ્થળોએ જોવામાં આવશે ( .js જોડવામાં આવશે. નામ, સિવાય કે તે પહેલાથી જ .js માં સમાપ્ત થાય )

  • વર્તમાન ડિરેક્ટરી
  • વર્તમાન ડિરેક્ટરીમાં .hokey-filters નામની ડિરેક્ટરી
  • ${HOME}/.hokey-filters નામની ડિરેક્ટરી, જ્યાં ${HOME} વર્તમાન વપરાશકર્તાની હોમ ડિરેક્ટરી છે
  • બિલ્ટ-ઇન ફિલ્ટર્સ ડિરેક્ટરી

ફિલ્ટર પરિમાણો

filter શબ્દમાળા બહુવિધ શબ્દો હોઈ શકે છે. આ કિસ્સામાં, પ્રથમ શબ્દ ફિલ્ટર નામ છે, અને બાકીના શબ્દો filter ફંક્શનમાં દલીલો તરીકે પસાર કરવામાં આવશે

મદદ

મદદ બતાવવા માટે -h / --help નો ઉપયોગ કરો

JSON બેચ આદેશો

-j / --json વિકલ્પ સાથે, તમે બહુવિધ સંકલિત hokey આદેશો ચલાવી શકો છો

સંમેલન દ્વારા આ ફાઇલને hokey.json કહેવામાં આવે છે, પરંતુ તમે તેને ગમે તે નામ આપી શકો છો

જો તમે ડિરેક્ટરીને -j વિકલ્પ તરીકે પાસ કરો છો, તો hokey તે ડિરેક્ટરીમાં hokey.json .

JSON ફાઇલમાં એક ઑબ્જેક્ટ હોવો જોઈએ. તે ઑબ્જેક્ટની અંદર, તેની મિલકતના નામો સમાન છે કમાન્ડ-લાઇન વિકલ્પો, વત્તા hokey નામની એક વધારાની મિલકત

hokey ગુણધર્મ એ ચલાવવા માટેના આદેશોની શ્રેણી છે. આ આદેશોની અંદર જાહેર કરાયેલ ગુણધર્મો કરશે બાહ્ય ઑબ્જેક્ટમાં કોઈપણ ડુપ્લિકેટ ઘોષણાઓ પર ફરીથી લખો.

hokey એરેમાં દરેક ઑબ્જેક્ટની અંદર, તમારે એક name અને ઇનપુટ અને આઉટપુટ ફાઇલોનો ઉલ્લેખ કરવો જોઈએ

અહીં hokey.json નું ઉદાહરણ છે

{
    "inputLanguage": "en",
    "languages": "es,fr,ja", # can also be an array of strings
    "force": false,
    "match": null,
    "processAs": null,
    "excludes": ["exclude-1", "exclude-2"],
    "handlebars": false,
    "markdown": false,
    "regular": false,
    "dryRun": false,
    "filter": "theFilter.js",
    "hokey": [
      {
        "name": "locale names",
        "infile": "messages/locales_en.js",
        "outfile": "messages/locales_LANG.js",
        "handlebars": true
      },
      {
        "name": "CLI messages",
        "infile": "messages/en_messages.js",
        "outfile": "messages/LANG_messages.js",
        "handlebars": true
      },
      {
        "name": "README",
        "infile": "README.md",
        "outfile": "lang/LANG/",
        "excludes": ["lang/", "node_modules/", "\\.git/", "tmp/"],
        "filter": "relativizeMarkdownLinks lang",
        "markdown": true,
        "index": "lang/README.md"
      }
    ]
}

બહુવિધ ઇનપુટ ફાઇલો

એકલ પાથ infile infileને બદલેinfiles` તરીકે ફાઇલ પાથની એરે પસાર કરો, જેમ કે આ ઉદાહરણમાં:

{
  ... [
    {
      "name": "my docs",
      "infiles": ["README.md", "INSTALL.md", "TUTORIAL.md"],
      "outfile": "docs/LANG/",
      "markdown": true
  ]
}

અનુક્રમણિકાઓ

ઘણી ભાષાઓમાં અનુવાદ કરતી વખતે, hokey એક અનુક્રમણિકા ફાઇલ બનાવી શકે છે જે કરવામાં આવેલ તમામ અનુવાદોની યાદી આપે છે અને તેમને લિંક્સ પ્રદાન કરે છે

ઇન્ડેક્સ જનરેટ કરતી વખતે, તમારી પાસે ફક્ત એક જ ઇનપુટ સ્ત્રોત હોઈ શકે છે

-I / --index વિકલ્પ પસાર કરો, મૂલ્ય એ છે કે જ્યાં ઇન્ડેક્સ ફાઇલ જનરેટ થશે, જે ફાઇલ હોઈ શકે છે અથવા ડિરેક્ટરી. જો તે ડિરેક્ટરી છે, તો નમૂનાના આધારે ડિફૉલ્ટ ફાઇલનામનો ઉપયોગ કરવામાં આવશે (નીચે જુઓ)

ઇન્ડેક્સ આઉટપુટ કેવી રીતે ફોર્મેટ થાય છે તે નિર્ધારિત કરવા માટે -A / --index-template નો ઉપયોગ કરો. તમે 'html' નો ઉલ્લેખ કરી શકો છો, 'માર્કડાઉન', 'ટેક્સ્ટ' અથવા તમારા પોતાના HandlebarsJS ટેમ્પલેટનો ફાઈલ પાથ

જો તમે તમારા પોતાના નમૂનાનો ઉલ્લેખ કરો છો, તો તમારે -I / --index માટે ફાઇલ (નિર્દેશિકા નહીં) પણ નિર્દિષ્ટ કરવી આવશ્યક છે. વિકલ્પ

ભાષાઓનું ભાષાંતર કરવામાં મજા માણો!