Skip to content

Commit 48a7ac6

Browse files
CopilotCopilot
andcommitted
Add call-c-from-java translations for all 12 non-English locales
Adds YAML translation files for de, es, pt-BR, zh-CN, ar, fr, ja, ko, bn, it, pl, tr. Each file contains only translatable fields. Technical terms (JNI, FFM, javac, JNIEnv, MethodHandle, Arena, JDK 22) are unchanged in all languages. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 109d1fd commit 48a7ac6

File tree

12 files changed

+204
-0
lines changed

12 files changed

+204
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "استدعاء كود C من Java"
2+
oldApproach: "JNI (واجهة Java الأصيلة)"
3+
modernApproach: "FFM (واجهة برمجة الدوال الخارجية والذاكرة)"
4+
summary: "تتيح FFM لـ Java استدعاء مكتبات C مباشرةً، دون الحاجة إلى كليشيهات JNI أو معرفة Java على جانب C."
5+
explanation: "تمتلك Java نهجين لاستدعاء كود C/C++ الأصيل: JNI التقليدي وواجهة FFM الحديثة. مع JNI، تُعلن عن الدالة بوصفها native، ثم تُشغّل javac -h لتوليد ملف ترويسة C، وتُنفّذ الدالة باستخدام JNI C API المعقّدة (JNIEnv وjstring وما إلى ذلك). تُزيل FFM المُقدَّمة كواجهة برمجة قياسية في Java 22 كل ذلك: كود C يبقى C عادياً — دون الحاجة لاتفاقيات JNI. هذا يُسهّل استدعاء مكتبات C/C++ الموجودة دون تعديل. يستخدم الجانب Java كائن Arena لإدارة الذاكرة خارج الكومة بأمان، وMethodHandle للاستدعاء النازل، مما يضمن المرونة والأمان."
6+
whyModernWins:
7+
- icon: "👁"
8+
title: "كود C يبقى C نقياً"
9+
desc: "لا تحتاج دالة C إلى تعليقات JNI أو كليشيهات JNIEnv — يمكن استدعاء أي مكتبة C موجودة مباشرةً."
10+
- icon: ""
11+
title: "أكثر مرونة"
12+
desc: "استدعِ معظم مكتبات C/C++ الموجودة مباشرةً دون كتابة كود محوّل أو توليد ملفات ترويسة."
13+
- icon: "🛠️"
14+
title: "سير عمل أسهل"
15+
desc: "لا حاجة للتوقف وتشغيل javac -h وتنفيذ الواجهة المُعرَّفة في ملف .h المُوَلَّد."
16+
support:
17+
description: "تم توحيده في JDK 22 (مارس 2024)؛ كان في مرحلة الحضانة منذ JDK 14"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: Java থেকে C কোড কল করা
2+
oldApproach: JNI (Java Native Interface)
3+
modernApproach: FFM (Foreign Function & Memory API)
4+
summary: FFM জাভাকে JNI বয়লারপ্লেট বা C-সাইডে Java জ্ঞান ছাড়াই সরাসরি C লাইব্রেরি কল করতে দেয়।
5+
explanation: "Java-তে নেটিভ C/C++ কোড কল করার দুটি পদ্ধতি রয়েছে: ঐতিহ্যগত JNI এবং আধুনিক FFM API। JNI-এর সাথে, আপনি একটি মেথড native হিসেবে ঘোষণা করেন, C হেডার ফাইল তৈরি করতে javac -h চালান, তারপর কষ্টকর JNI C API (JNIEnv, jstring ইত্যাদি) ব্যবহার করে ফাংশন ইমপ্লিমেন্ট করেন। Java 22-এ স্ট্যান্ডার্ড API হিসেবে প্রবর্তিত FFM এই সব বাদ দেয়: C কোড শুধু সাধারণ C — কোনো JNI কনভেনশন প্রয়োজন নেই। এটি পরিবর্তন ছাড়াই বিদ্যমান C/C++ লাইব্রেরি কল করা অনেক সহজ করে তোলে। Java সাইড নিরাপদ অফ-হিপ মেমরি ম্যানেজমেন্টের জন্য Arena এবং ডাউনকলের জন্য MethodHandle ব্যবহার করে, যা নমনীয়তা এবং নিরাপত্তা উভয়ই নিশ্চিত করে।"
6+
whyModernWins:
7+
- icon: "👁"
8+
title: C কোড সাদামাটা C-ই থাকে
9+
desc: C ফাংশনে কোনো JNI অ্যানোটেশন বা JNIEnv বয়লারপ্লেট প্রয়োজন নেই — যেকোনো বিদ্যমান C লাইব্রেরি যেমন আছে তেমনি কল করা যায়।
10+
- icon: ""
11+
title: আরও নমনীয়
12+
desc: অ্যাডাপ্টার কোড লেখা বা হেডার ফাইল তৈরি না করেই বেশিরভাগ বিদ্যমান C/C++ লাইব্রেরি সরাসরি কল করুন।
13+
- icon: "🛠️"
14+
title: সহজতর ওয়ার্কফ্লো
15+
desc: "থামার, javac -h চালানোর এবং জেনারেটেড .h ফাইলে সংজ্ঞায়িত ইন্টারফেস ইমপ্লিমেন্ট করার প্রয়োজন নেই।"
16+
support:
17+
description: JDK 22-এ মানসম্পন্ন (মার্চ 2024); পূর্বে JDK 14 থেকে ইনকিউবেটিং
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "C-Code aus Java aufrufen"
2+
oldApproach: "JNI (Java Native Interface)"
3+
modernApproach: "FFM (Foreign Function & Memory API)"
4+
summary: "FFM ermöglicht es Java, C-Bibliotheken direkt aufzurufen, ohne JNI-Boilerplate oder Java-Kenntnisse auf der C-Seite."
5+
explanation: "Java bietet zwei Ansätze zum Aufrufen von nativem C/C++-Code: das traditionelle JNI und die moderne FFM API. Bei JNI deklarieren Sie eine Methode als native, führen javac -h aus, um eine C-Header-Datei zu generieren, und implementieren die Funktion mit der umständlichen JNI-C-API (JNIEnv, jstring usw.). FFM, als Standard-API in Java 22 eingeführt, eliminiert all das: C-Code bleibt reines C — keine JNI-Konventionen erforderlich. Dies macht es viel einfacher, bestehende C/C++-Bibliotheken ohne Änderungen aufzurufen. Die Java-Seite verwendet Arena für sicheres Off-Heap-Speichermanagement und MethodHandle für den Downcall, was sowohl Flexibilität als auch Sicherheit gewährleistet."
6+
whyModernWins:
7+
- icon: "👁"
8+
title: "C-Code bleibt reines C"
9+
desc: "Die C-Funktion benötigt keine JNI-Annotationen oder JNIEnv-Boilerplate — jede vorhandene C-Bibliothek kann direkt aufgerufen werden."
10+
- icon: ""
11+
title: "Flexibler"
12+
desc: "Die meisten vorhandenen C/C++-Bibliotheken können direkt aufgerufen werden, ohne Adaptercode zu schreiben oder Header-Dateien zu generieren."
13+
- icon: "🛠️"
14+
title: "Einfacherer Workflow"
15+
desc: "Kein Stoppen, kein Ausführen von javac -h und kein Implementieren der in der generierten .h-Datei definierten Schnittstelle."
16+
support:
17+
description: "In JDK 22 standardisiert (März 2024); zuvor seit JDK 14 in der Inkubationsphase"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: Llamar a código C desde Java
2+
oldApproach: JNI (Java Native Interface)
3+
modernApproach: FFM (Foreign Function & Memory API)
4+
summary: FFM permite a Java llamar directamente a bibliotecas C sin el código repetitivo de JNI ni conocimiento de Java en el lado C.
5+
explanation: "Java tiene dos enfoques para llamar a código nativo C/C++: el tradicional JNI y la moderna API FFM. Con JNI, se declara un método como native, se ejecuta javac -h para generar un archivo de encabezado C y se implementa la función usando la complicada API JNI de C (JNIEnv, jstring, etc.). FFM, introducida como API estándar en Java 22, elimina todo eso: el código C es simplemente C puro — sin necesidad de convenciones JNI. Esto facilita mucho la llamada a bibliotecas C/C++ existentes sin modificaciones. El lado Java usa Arena para la gestión segura de memoria fuera del heap y MethodHandle para el downcall, garantizando flexibilidad y seguridad."
6+
whyModernWins:
7+
- icon: "👁"
8+
title: El código C permanece como C puro
9+
desc: "La función C no requiere anotaciones JNI ni código JNIEnv repetitivo — cualquier biblioteca C existente puede llamarse tal cual."
10+
- icon: ""
11+
title: Más flexible
12+
desc: "Llama directamente a la mayoría de las bibliotecas C/C++ existentes sin escribir código adaptador ni generar archivos de encabezado."
13+
- icon: "🛠️"
14+
title: Flujo de trabajo más sencillo
15+
desc: "No es necesario detenerse, ejecutar javac -h e implementar la interfaz definida en el archivo .h generado."
16+
support:
17+
description: Estandarizado en JDK 22 (marzo 2024); anteriormente en incubación desde JDK 14
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: Appeler du code C depuis Java
2+
oldApproach: JNI (Java Native Interface)
3+
modernApproach: FFM (Foreign Function & Memory API)
4+
summary: FFM permet à Java d'appeler directement des bibliothèques C, sans code répétitif JNI ni connaissance de Java côté C.
5+
explanation: "Java propose deux approches pour appeler du code natif C/C++ : le JNI traditionnel et la moderne API FFM. Avec JNI, vous déclarez une méthode comme native, exécutez javac -h pour générer un fichier d'en-tête C, puis implémentez la fonction en utilisant la lourde API JNI C (JNIEnv, jstring, etc.). FFM, introduite comme API standard dans Java 22, élimine tout cela : le code C reste du C pur — aucune convention JNI n'est requise. Cela facilite considérablement l'appel de bibliothèques C/C++ existantes sans modification. Le côté Java utilise Arena pour la gestion sécurisée de la mémoire hors tas et MethodHandle pour le downcall, garantissant flexibilité et sécurité."
6+
whyModernWins:
7+
- icon: "👁"
8+
title: Le code C reste du C pur
9+
desc: "La fonction C n'a besoin d'aucune annotation JNI ni de code JNIEnv répétitif — toute bibliothèque C existante peut être appelée telle quelle."
10+
- icon: ""
11+
title: Plus flexible
12+
desc: "Appelez directement la plupart des bibliothèques C/C++ existantes sans écrire de code adaptateur ni générer de fichiers d'en-tête."
13+
- icon: "🛠️"
14+
title: Workflow simplifié
15+
desc: "Inutile de s'arrêter, d'exécuter javac -h et d'implémenter l'interface définie dans le fichier .h généré."
16+
support:
17+
description: Standardisé dans JDK 22 (mars 2024) ; auparavant en incubation depuis JDK 14
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: Chiamare codice C da Java
2+
oldApproach: JNI (Java Native Interface)
3+
modernApproach: FFM (Foreign Function & Memory API)
4+
summary: "FFM consente a Java di chiamare direttamente librerie C, senza boilerplate JNI né conoscenza di Java lato C."
5+
explanation: "Java offre due approcci per chiamare codice nativo C/C++: il tradizionale JNI e la moderna API FFM. Con JNI, si dichiara un metodo come native, si esegue javac -h per generare un file di intestazione C, quindi si implementa la funzione usando la complicata JNI C API (JNIEnv, jstring, ecc.). FFM, introdotta come API standard in Java 22, elimina tutto ciò: il codice C rimane puro C — nessuna convenzione JNI richiesta. Questo rende molto più semplice chiamare librerie C/C++ esistenti senza modifiche. Il lato Java usa Arena per la gestione sicura della memoria off-heap e MethodHandle per il downcall, garantendo flessibilità e sicurezza."
6+
whyModernWins:
7+
- icon: "👁"
8+
title: Il codice C rimane C puro
9+
desc: "La funzione C non richiede annotazioni JNI né boilerplate JNIEnv — qualsiasi libreria C esistente può essere chiamata così com'è."
10+
- icon: ""
11+
title: Più flessibile
12+
desc: "Chiama direttamente la maggior parte delle librerie C/C++ esistenti senza scrivere codice adattatore né generare file di intestazione."
13+
- icon: "🛠️"
14+
title: Flusso di lavoro più semplice
15+
desc: "Nessuna necessità di fermarsi, eseguire javac -h e implementare l'interfaccia definita nel file .h generato."
16+
support:
17+
description: Standardizzato in JDK 22 (marzo 2024); precedentemente in incubazione da JDK 14
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: JavaからCコードを呼び出す
2+
oldApproach: JNI(Java Native Interface)
3+
modernApproach: FFM(Foreign Function & Memory API)
4+
summary: "FFMを使えば、JNIのボイラープレートやC側でのJavaの知識なしに、JavaからCライブラリを直接呼び出せる。"
5+
explanation: "Javaにはネイティブな C/C++ コードを呼び出す2つのアプローチがあります:従来のJNIとモダンなFFM APIです。JNIでは、メソッドをnativeとして宣言し、javac -hを実行してCヘッダーファイルを生成し、煩雑なJNI C API(JNIEnv、jstringなど)を使って関数を実装する必要があります。Java 22で標準APIとして導入されたFFMは、そのすべてを不要にします:Cコードはただの普通のC — JNIの慣例は不要です。これにより、既存のC/C++ライブラリを変更なしに呼び出すことがはるかに容易になります。Javaサイドでは、安全なオフヒープメモリ管理にArenaを、ダウンコールにMethodHandleを使用し、柔軟性と安全性の両方を確保します。"
6+
whyModernWins:
7+
- icon: "👁"
8+
title: Cコードは普通のCのまま
9+
desc: "C関数にJNIアノテーションもJNIEnvのボイラープレートも不要 — 既存のCライブラリをそのまま呼び出せます。"
10+
- icon: ""
11+
title: より柔軟
12+
desc: "アダプターコードを書いたりヘッダーファイルを生成したりせずに、ほとんどの既存C/C++ライブラリを直接呼び出せます。"
13+
- icon: "🛠️"
14+
title: ワークフローが簡単
15+
desc: "javac -hを実行して生成された.hファイルで定義されたインターフェースを実装するために作業を止める必要がありません。"
16+
support:
17+
description: JDK 22で標準化(2024年3月);JDK 14からインキュベーション中
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: "Java에서 C 코드 호출하기"
2+
oldApproach: "JNI (Java Native Interface)"
3+
modernApproach: "FFM (Foreign Function & Memory API)"
4+
summary: "FFM은 JNI 보일러플레이트나 C 측의 Java 지식 없이 Java가 C 라이브러리를 직접 호출할 수 있게 합니다."
5+
explanation: "Java에는 네이티브 C/C++ 코드를 호출하는 두 가지 접근 방식이 있습니다: 전통적인 JNI와 현대적인 FFM API입니다. JNI를 사용하면 메서드를 native로 선언하고, javac -h를 실행하여 C 헤더 파일을 생성한 다음, 번거로운 JNI C API(JNIEnv, jstring 등)를 사용하여 함수를 구현해야 합니다. Java 22에서 표준 API로 도입된 FFM은 이 모든 것을 없애줍니다: C 코드는 그냥 순수한 C — JNI 규약이 필요 없습니다. 이를 통해 기존 C/C++ 라이브러리를 수정 없이 훨씬 쉽게 호출할 수 있습니다. Java 측에서는 안전한 오프힙 메모리 관리를 위해 Arena를, 다운콜을 위해 MethodHandle을 사용하여 유연성과 안전성을 모두 보장합니다."
6+
whyModernWins:
7+
- icon: "👁"
8+
title: "C 코드는 순수한 C 그대로"
9+
desc: "C 함수에는 JNI 어노테이션이나 JNIEnv 보일러플레이트가 필요 없습니다 — 기존 C 라이브러리를 그대로 호출할 수 있습니다."
10+
- icon: ""
11+
title: "더 유연함"
12+
desc: "어댑터 코드를 작성하거나 헤더 파일을 생성하지 않고도 대부분의 기존 C/C++ 라이브러리를 직접 호출할 수 있습니다."
13+
- icon: "🛠️"
14+
title: "더 쉬운 워크플로"
15+
desc: "멈춰서 javac -h를 실행하고 생성된 .h 파일에 정의된 인터페이스를 구현할 필요가 없습니다."
16+
support:
17+
description: "JDK 22에서 표준화됨 (2024년 3월); 이전에는 JDK 14부터 인큐베이팅"
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: Wywołanie kodu C z Javy
2+
oldApproach: JNI (Java Native Interface)
3+
modernApproach: FFM (Foreign Function & Memory API)
4+
summary: FFM pozwala Javie wywoływać biblioteki C bezpośrednio, bez kodu szablonowego JNI ani znajomości Javy po stronie C.
5+
explanation: "Java oferuje dwa podejścia do wywoływania natywnego kodu C/C++: tradycyjne JNI oraz nowoczesne API FFM. W JNI deklarujesz metodę jako native, uruchamiasz javac -h, aby wygenerować plik nagłówkowy C, a następnie implementujesz funkcję przy użyciu uciążliwego JNI C API (JNIEnv, jstring itp.). FFM, wprowadzone jako standardowe API w Java 22, eliminuje to wszystko: kod C pozostaje zwykłym C — bez żadnych konwencji JNI. Dzięki temu wywołanie istniejących bibliotek C/C++ bez modyfikacji jest znacznie łatwiejsze. Strona Java używa Arena do bezpiecznego zarządzania pamięcią poza stertą oraz MethodHandle do downcallu, zapewniając zarówno elastyczność, jak i bezpieczeństwo."
6+
whyModernWins:
7+
- icon: "👁"
8+
title: Kod C pozostaje zwykłym C
9+
desc: Funkcja C nie wymaga adnotacji JNI ani kodu szablonowego JNIEnv — każdą istniejącą bibliotekę C można wywołać bez zmian.
10+
- icon: ""
11+
title: Większa elastyczność
12+
desc: Bezpośrednie wywoływanie większości istniejących bibliotek C/C++ bez pisania kodu adaptera ani generowania plików nagłówkowych.
13+
- icon: "🛠️"
14+
title: Prostszy przepływ pracy
15+
desc: "Nie trzeba zatrzymywać się, uruchamiać javac -h i implementować interfejsu zdefiniowanego w wygenerowanym pliku .h."
16+
support:
17+
description: Ustandaryzowane w JDK 22 (marzec 2024); wcześniej w fazie inkubacji od JDK 14
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
title: Chamar código C a partir do Java
2+
oldApproach: JNI (Java Native Interface)
3+
modernApproach: FFM (Foreign Function & Memory API)
4+
summary: FFM permite que o Java chame bibliotecas C diretamente, sem boilerplate de JNI ou conhecimento de Java no lado C.
5+
explanation: "O Java possui duas abordagens para chamar código nativo C/C++: o tradicional JNI e a moderna API FFM. Com o JNI, você declara um método como native, executa javac -h para gerar um arquivo de cabeçalho C e implementa a função usando a complicada API JNI de C (JNIEnv, jstring, etc.). O FFM, introduzido como API padrão no Java 22, elimina tudo isso: o código C é C puro — sem convenções JNI necessárias. Isso torna muito mais fácil chamar bibliotecas C/C++ existentes sem modificações. O lado Java usa Arena para o gerenciamento seguro de memória fora do heap e MethodHandle para o downcall, garantindo flexibilidade e segurança."
6+
whyModernWins:
7+
- icon: "👁"
8+
title: Código C permanece C puro
9+
desc: "A função C não requer anotações JNI ou boilerplate JNIEnv — qualquer biblioteca C existente pode ser chamada como está."
10+
- icon: ""
11+
title: Mais flexível
12+
desc: "Chame diretamente a maioria das bibliotecas C/C++ existentes sem escrever código adaptador ou gerar arquivos de cabeçalho."
13+
- icon: "🛠️"
14+
title: Fluxo de trabalho mais simples
15+
desc: "Sem necessidade de parar, executar javac -h e implementar a interface definida no arquivo .h gerado."
16+
support:
17+
description: Padronizado no JDK 22 (março de 2024); anteriormente em incubação desde o JDK 14

0 commit comments

Comments
 (0)