Skip to content

Feature/localization ja#2396

Open
fujimon0722 wants to merge 87 commits into
PixelPlayerHQ:masterfrom
fujimon0722:feature/localization-ja
Open

Feature/localization ja#2396
fujimon0722 wants to merge 87 commits into
PixelPlayerHQ:masterfrom
fujimon0722:feature/localization-ja

Conversation

@fujimon0722

Copy link
Copy Markdown

Hello. I’m a PixelPlayer user from Japan.

I use this project on a daily basis, but since it currently only supports English-speaking regions, I wanted to display the interface in Japanese. I’ve completed the localization and am submitting a pull request.

I’ve been working as a software engineer with languages like C# and TypeScript since before AI became widespread, but lately I’ve been relying almost exclusively on Claude Code and other LLMs to interpret specifications. I also have some experience with Android apps. I reviewed the code based on the commit details. Then, I visually checked for any differences in meaning between the English and Japanese text during the localization process. I also ran tests to ensure that no changes other than the Japanese localization were made.

This is my first time submitting a pull request on GitHub, so I apologize if I’ve violated any rules or been rude in any way.

I hope this contribution from Japan proves useful.

System Requirements

  • OnePlus 12 (Lineage OS 23.2-20260604-NIGHTLY-waffle)
  • ALLDOCUBE iPlay 50 Pro mini (Lineage OS 23.2-20260524-GAPPS-EXT4-GSI) (Debug)
Screenshot_20260618-145202_PixelPlayer Screenshot_20260618-145217_PixelPlayer Screenshot_20260618-145219_PixelPlayer Screenshot_20260618-145221_PixelPlayer Screenshot_20260618-145228_PixelPlayer Screenshot_20260618-145840_PixelPlayer

rebornlokii and others added 30 commits June 13, 2026 09:39
Updated Italian strings in changelogs for improved clarity and consistency.
Renamed the central AI orchestration class from AiOrchestrator to AiHandler
and updated all references across the codebase.
…s all providers

- Create UnifiedModelFilter utility that filters out embedding, image, TTS,
  speech, moderation, vision-only, and other non-chat models
- Update GeminiAiClient to use UnifiedModelFilter instead of hardcoded markers
- Update GenericOpenAiClient to use UnifiedModelFilter instead of inline filter
These providers all use OpenAI-compatible APIs. Switching from dedicated
client classes to GenericOpenAiClient eliminates duplicate code. The old
class files are kept on disk but no longer referenced.
Add CUSTOM provider with hasConfigurableUrl=true and requiresApiKey=true
for user-configured self-hosted/custom API endpoints.
CUSTOM provider uses GenericOpenAiClient with an empty default URL (user
configures it via settings). createClientWithUrl allows creating a client
with a custom base URL for configurable-URL providers.
…ncesRepository

Add getBaseUrl/setBaseUrl generic accessors for configurable-URL providers.
Add customApiKey, customModel, customSystemPrompt, customBaseUrl convenience
flows for the CUSTOM provider.
Ollama is a cloud API-based provider (requires API key, fixed URL),
separate from the CUSTOM provider which allows custom endpoints.
A new composable that opens a ModalBottomSheet with a searchable LazyColumn
of AI models. Includes search filtering, model count display, and visual
selection state.
@fujimon0722

Copy link
Copy Markdown
Author

了解しました。承認を待ちます。

Understood. I'll wait for approval. Thank you.

lostf1sh and others added 16 commits June 19, 2026 17:58
- Add PAUSE_ON_VOLUME_ZERO DataStore key + flow + setter to UserPreferencesRepository
- Collect pref in MusicService and pause playback when volume hits 0
- ReplayGain programmatic volume adjustments are unaffected
- Add Python script to inject localized strings into all 12 locale files
- Add ContentObserver on Settings.System.CONTENT_URI to detect hardware
  volume key changes and pause when media stream reaches 0
- Registers observer in onCreate, unregisters in onDestroy
- Add Volume subsection with SwitchSettingItem to SettingsCategoryScreen
- Add pauseOnVolumeZero field to SettingsUiState
- Add pauseOnVolumeZeroFlow to SettingsViewModel combine() block
- Add setPauseOnVolumeZero() setter in SettingsViewModel
- Inject settings_volume_section, settings_pause_on_volume_zero and _desc
  into strings_settings.xml for all 12 locales
- Remove duplicate keys from strings.xml (AAPT2 duplicate resources fix)
- Fix rogue spaces in Korean strings_settings.xml entries
Processing all songs in a single pass exhausted the 256 MB heap on
devices with large Telegram channels (reproduced at 65k songs, PixelPlayerHQ#2172).
Songs are now processed and flushed to Room in batches of 500, keeping
peak memory bounded regardless of channel size.

- Album songCounts accumulated across all chunks; every chunk re-upserts
  albums it touches so the final count is always correct
- Deletion diff runs after all chunks using the complete synced ID set
- Deletions batched in 500s to respect SQLite variable limits
- Remove duplicate getAllArtistsListRaw() call (was called twice)

Co-authored-by: Claude <claude@anthropic.com>
…er-issues

Align artist parsing with conservative default delimiters
feat(playback): pause on volume zero + OOM fix for large Telegram channels
…st-song-count

fix(playlists): prevent lost playlist edits from concurrent song removals (PixelPlayerHQ#2391)
feat(ai): massive architecture overhaul, new providers, and generation tuning
…strings

Update French lyrics mode strings for consistency MERGE PixelPlayerHQ#2347 and PixelPlayerHQ#2352 FIRST
ui: fix layout jump when collapsing telegram channel topics and Added Telegram, GitHub buttons in About screen
@lostf1sh

Copy link
Copy Markdown
Collaborator

thank you for your contributions for translating the app to your local language however, we have to keep this pr open for a while because we're still on beta, adding more and more things to the app and that makes translations half-baked. thank you.

lostf1sh and others added 6 commits June 22, 2026 19:55
… glyphs

NetEase library sync (PixelPlayerHQ#2431):
- syncUnifiedLibrarySongsFromNetease() built SongEntity without sourceType,
  so rows defaulted to SourceType.LOCAL. NetEase tracks showed up in the
  local media library, the incremental-sync deletion diff was a no-op
  (getAllNeteaseSongIds filters source_type=2), and logout cleanup via
  clearAllNeteaseSongs deleted nothing. Now set sourceType = NETEASE and
  artistsJson, matching the SyncWorker path.
- getSongUrl defaulted to "exhigh" with no lossless tier, so SVIP accounts
  were capped to lower quality. Default to "lossless" and fall back through
  exhigh/higher/standard so non-privileged accounts still resolve a URL.

Lyrics card glyphs (PixelPlayerHQ#2427):
- Extended Unicode glyphs (e.g. Icelandic æ ð þ) rendered as tofu because
  the lyrics text used the bundled Google Sans Rounded variable font, which
  drops those codepoints at runtime. Render lyrics with the platform default
  font (fontFamily = null), which has full Latin Extended coverage.
…source-and-lyrics-glyphs

fix: NetEase source tagging + lossless quality, and lyrics-card extended Unicode glyphs
fix(library): show home icon in folder breadcrumbs when at root level
@daedaevibin

Copy link
Copy Markdown
Contributor

@fujimon0722

Hello! I just seen this.

I did this same thing in my own PR #2457, and was wondering if you'd like to review it?

(I did not realize this PR was open, as I tend to track new items more than anything.)

@lostf1sh

Copy link
Copy Markdown
Collaborator

@fujimon0722

Hello! I just seen this.

I did this same thing in my own PR #2457, and was wondering if you'd like to review it?

(I did not realize this PR was open, as I tend to track new items more than anything.)

how could you not see this even though you mentioned the pr in your old pr, dude.
image

@fujimon0722

fujimon0722 commented Jun 24, 2026

Copy link
Copy Markdown
Author

thank you for your contributions for translating the app to your local language however, we have to keep this pr open for a while because we're still on beta, adding more and more things to the app and that makes translations half-baked. thank you.

I'm not quite sure what everyone's talking about, but since I want to incorporate the latest features, I'll follow the branch and make adjustments as needed!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants